搜索

2.2. 使用 RHEL 或 Windows ISO 文件创建实例镜像

download PDF

您可以从 ISO 文件以 QCOW2 格式创建自定义 Red Hat Enterprise Linux (RHEL)或 Windows 镜像,并将这些镜像上传到 Red Hat OpenStack Platform (RHOSP)镜像,以便在创建实例时使用。

2.2.1. 先决条件

  • 用于创建镜像的 Linux 主机机器。这可以是您可以安装和运行 Linux 软件包的任何计算机,但 undercloud 或 overcloud 除外。
  • advanced-virt 存储库已启用:

    $ sudo subscription-manager repos --enable=advanced-virt-for-rhel-<ver>-x86_64-rpms
  • virt-manager 应用程序安装有创建客户机操作系统所需的所有软件包:

    $ sudo dnf module install -y virt
  • libguestfs-tools 软件包安装有一组用于访问和修改虚拟机镜像的工具:

    $ sudo dnf install -y libguestfs-tools-c
  • RHEL 9 或 8 ISO 文件或 Windows ISO 文件。有关 RHEL ISO 文件的详情,请参考 RHEL 9.0 Binary DVDRHEL 8.6 Binary DVD。如果您没有 Windows ISO 文件,请参阅 Microsoft 评估中心 下载评估镜像。
  • 文本编辑器,如果要更改 kickstart 文件(仅限 RHEL)。
重要

如果在 undercloud 上安装 libguestfs-tools 软件包,请取消激活 iscsid.socket,以避免在 undercloud 上与 tripleo_iscsid 服务冲突:

$ sudo systemctl disable --now iscsid.socket

当您有先决条件时,您可以继续创建 RHEL 或 Windows 镜像:

2.2.2. 创建 Red Hat Enterprise Linux 9 镜像

您可以使用 Red Hat Enterprise Linux (RHEL) 9 ISO 文件以 QCOW2 格式创建 Red Hat OpenStack Platform (RHOSP)镜像。

流程

  1. root 用户身份登录您的主机机器。
  2. 使用 virt-install 开始安装:

    [root@host]# virt-install \
      --virt-type kvm \
      --name <rhel9-cloud-image> \
      --ram <2048> \
      --cdrom </var/lib/libvirt/images/rhel-9.0-x86_64-dvd.iso> \
      --disk <rhel9.qcow2>,format=qcow2,size=<10> \
      --network=bridge:virbr0 \
      --graphics vnc,listen=127.0.0.1 \
      --noautoconsole \
      --os-variant=<rhel9.0>
    • 将尖括号 &lt ;& gt; 中的值替换为 RHEL 9 镜像的正确值。

      此命令会启动一个实例并启动安装过程。

      注意

      如果实例没有自动启动,请运行 virt-viewer 命令来查看控制台:

      [root@host]# virt-viewer <rhel9-cloud-image>
  3. 配置实例:

    1. 在初始安装程序引导菜单中,选择 Install Red Hat Enterprise Linux 9
    2. 选择相应的 LanguageKeyboard 选项。
    3. 当系统提示安装所使用的设备类型时,请选择 Auto-detected installation media
    4. 当提示安装目的地类型时,请选择 Local Standard Disks。对于其他存储选项,请选择 Automatically configure partitioning
    5. 您想要的安装类型中,选择" 基本服务器 安装",这将安装 SSH 服务器。
    6. 对于网络和主机名,请选择 eth0 作为网络,然后选择您的设备的主机名。默认主机名是 localhost.localdomain
    7. Root Password 字段中输入密码,然后在 Confirm 字段中输入同一密码。
  4. 当屏幕消息确认安装已完成后,重启实例并以 root 用户身份登录。
  5. 更新 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,使其只包含以下值:

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no
  6. 重启机器。
  7. 使用 Content Delivery Network 注册机器。

    # sudo subscription-manager register
    # sudo subscription-manager attach \
      --pool=<pool-id>
    # sudo subscription-manager repos \
      --enable rhel-9-for-x86_64-baseos-rpms \
      --enable rhel-9-for-x86_64-appstream-rpms
    • 使用有效的池 ID 替换 pool-id。您可以通过运行 subscription-manager list --available 命令来查看可用池 ID 列表。
  8. 更新系统:

    # dnf -y update
  9. 安装 cloud-init 软件包:

    # dnf install -y cloud-utils-growpart cloud-init
  10. 编辑 /etc/cloud/cloud.cfg 配置文件,并在 cloud_init_modules 下添加以下内容:

    - resolv-conf

    resolv-conf 选项会在实例第一次引导时自动配置 resolv.conf 文件。此文件包含与实例相关的信息,如 名称服务器 和其他选项。

  11. /etc/sysconfig/network 中添加以下行以避免访问 EC2 元数据服务时出现问题:

    NOZEROCONF=yes
  12. 要确保控制台信息会在仪表板的 Log 标签页和 nova console-log 输出中显示,请在 /etc/default/grub 文件中添加以下引导选项:

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
  13. 运行 grub2-mkconfig 命令:

    # grub2-mkconfig -o /boot/grub2/grub.cfg

    输出如下:

    Generating grub configuration file ...
    Found linux image: /boot/vmlinuz-3.10.0-229.9.2.el9.x86_64
    Found initrd image: /boot/initramfs-3.10.0-229.9.2.el9.x86_64.img
    Found linux image: /boot/vmlinuz-3.10.0-121.el9.x86_64
    Found initrd image: /boot/initramfs-3.10.0-121.el9.x86_64.img
    Found linux image: /boot/vmlinuz-0-rescue-b82a3044fb384a3f9aeacf883474428b
    Found initrd image: /boot/initramfs-0-rescue-b82a3044fb384a3f9aeacf883474428b.img
    done
  14. 取消注册实例,以便生成的镜像不包含此实例的订阅详情:

    # subscription-manager repos --disable=*
    # subscription-manager unregister
    # dnf clean all
  15. 关闭实例:

    # poweroff
  16. 使用 virt-sysprep 命令重置并清理镜像,以便它可用于在没有问题的情况下创建实例:

    [root@host]# virt-sysprep -d <rhel9-cloud-image>
  17. 通过将磁盘镜像中的任何可用空间转换为主机中的可用空间来减小镜像大小:

    [root@host]# virt-sparsify \
      --compress <rhel9.qcow2> <rhel9-cloud.qcow2>

    此命令在运行命令的位置中创建一个新的 < rhel9-cloud.qcow 2> 文件。

    注意

    您必须根据应用到实例的类别中的磁盘空间手动调整实例的分区大小。

& lt;rhel9-cloud.qcow 2> 镜像文件可上传到镜像服务。有关将此 镜像上传到 RHOSP 部署的更多信息,请参阅将镜像上传到镜像服务

2.2.3. 创建 Red Hat Enterprise Linux 8 镜像

您可以使用 Red Hat Enterprise Linux (RHEL) 8 ISO 文件以 QCOW2 格式创建 Red Hat OpenStack Platform (RHOSP)镜像。

流程

  1. root 用户身份登录您的主机机器。
  2. 使用 virt-install 开始安装:

    [root@host]# virt-install \
      --virt-type kvm \
      --name <rhel86-cloud-image> \
      --ram <2048> \
      --vcpus <2> \
      --disk <rhel86.qcow2>,format=qcow2,size=<10> \
      --location <rhel-8.6-x86_64-boot.iso> \
      --network=bridge:virbr0 \
      --graphics vnc,listen=127.0.0.1 \
      --noautoconsole \
      --os-variant <rhel8.6>
    • 将尖括号 &lt ;& gt; 中的值替换为 RHEL 镜像的正确值。

      此命令会启动一个实例并启动安装过程。

      注意

      如果实例没有自动启动,请运行 virt-viewer 命令来查看控制台:

      [root@host]# virt-viewer <rhel86-cloud-image>
  3. 配置实例:

    1. 在初始安装程序引导菜单中,选择 Install Red Hat Enterprise Linux 8
    2. 选择相应的 LanguageKeyboard 选项。
    3. 当系统提示安装所使用的设备类型时,请选择 基本存储设备
    4. 为您的设备选择一个主机名。默认主机名是 localhost.localdomain
    5. 设置 时区和 root 密码。
    6. 您想要的安装类型中,选择" 基本服务器 安装",这将安装 SSH 服务器。
  4. 当屏幕消息确认安装已完成后,重启实例并以 root 用户身份登录。
  5. 更新 /etc/sysconfig/network-scripts/ifcfg-eth0 文件,使其只包含以下值:

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no
  6. 重启机器。
  7. 使用 Content Delivery Network 注册机器:

    # sudo subscription-manager register
    # sudo subscription-manager attach \
      --pool=<pool-id>
    # sudo subscription-manager repos \
      --enable rhel-8-for-x86_64-baseos-rpms \
      --enable rhel-8-for-x86_64-appstream-rpms
    • 使用有效的池 ID 替换 pool-id。您可以通过运行 subscription-manager list --available 命令来查看可用池 ID 列表。
  8. 更新系统:

    # dnf -y update
  9. 安装 cloud-init 软件包:

    # dnf install -y cloud-utils-growpart cloud-init
  10. 编辑 /etc/cloud/cloud.cfg 配置文件,并在 cloud_init_modules 下添加以下内容。

    - resolv-conf

    resolv-conf 选项会在实例第一次引导时自动配置 resolv.conf 文件。此文件包含与实例相关的信息,如 名称服务器 和其他选项。

  11. 要防止网络问题,请创建 /etc/udev/rules.d/75-persistent-net-generator.rules

    # echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules

    这可防止创建 /etc/udev/rules.d/70-persistent-net.rules 文件。如果创建了 /etc/udev/rules.d/70-persistent-net.rules 文件,当您从快照引导时,网络可能无法正常工作,因为网络接口是作为 eth1 而不是 eth0 创建的,且 IP 地址没有被分配。

  12. /etc/sysconfig/network 中添加以下行以避免访问 EC2 元数据服务时出现问题:

    NOZEROCONF=yes
  13. 要确保控制台信息会在仪表板的 Log 标签页和 nova console-log 输出中显示,请在 /etc/grub.conf 文件中添加以下引导选项:

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
  14. 取消注册实例,以便生成的镜像不包含此实例的相同订阅详情:

    # subscription-manager repos --disable=*
    # subscription-manager unregister
    # dnf clean all
  15. 关闭实例:

    # poweroff
  16. 使用 virt-sysprep 命令重置并清理镜像,以便它可用于在没有问题的情况下创建实例:

    [root@host]# virt-sysprep -d <rhel86-cloud-image>
  17. 通过将磁盘镜像中的任何可用空间转换为主机中的可用空间来减小镜像大小:

    [root@host]# virt-sparsify \
      --compress <rhel86.qcow2> <rhel86-cloud.qcow2>

    此命令在运行命令的位置中创建一个新的 < rhel86-cloud.qcow 2> 文件。

    注意

    您必须根据应用到实例的类别中的磁盘空间手动调整实例的分区大小。

& lt;rhel86-cloud.qcow 2> 镜像文件可上传到镜像服务。有关将此 镜像上传到 RHOSP 部署的更多信息,请参阅将镜像上传到镜像服务

2.2.4. 创建 Windows 镜像

您可以使用 Windows ISO 文件以 QCOW2 格式创建 Red Hat OpenStack Platform (RHOSP)镜像。

流程

  1. root 用户身份登录您的主机机器。
  2. 使用 virt-install 开始安装:

    [root@host]# virt-install \
        --name=<windows-image> \
        --disk size=<size> \
        --cdrom=<file-path-to-windows-iso-file> \
        --os-type=windows \
        --network=bridge:virbr0 \
        --graphics spice \
        --ram=<ram>
    • 将尖括号 &lt ;& gt; 中的值替换为您的 Windows 镜像的正确值。

      注意

      --os-type=windows 参数确保为 Windows 实例正确配置时钟,并启用其 Hyper-Vlightenment 功能。在将镜像上传到镜像服务(glance)之前,还必须在镜像元数据中设置 os_type=windows

  3. virt-install 命令默认将实例镜像保存为 /var/lib/libvirt/images/<windows-image>.qcow2。如果要在其他位置保留实例镜像,请更改 --disk 选项的参数:

    --disk path=<file-name>,size=<size>
    • <file-name > 替换为存储实例镜像的文件的名称,以及其路径(可选)。例如,path=win8.qcow2,size=8 在当前工作目录中创建一个名为 win8.qcow2 的 8 GB 文件。

      注意

      如果实例没有自动启动,请运行 virt-viewer 命令来查看控制台:

      [root@host]# virt-viewer <windows-image>

      有关如何安装 Windows 的更多信息,请参阅 Microsoft 文档。

  4. 要允许新安装的 Windows 系统使用虚拟化硬件,您可能需要安装 VirtIO 驱动程序。如需更多信息,请参阅 配置和管理虚拟化 中的 为 Windows 虚拟机安装 KVM 半虚拟驱动程序
  5. 要完成配置,请在 Windows 系统上下载并运行 Cloudbase-Init。在安装 Cloudbase-Init 的末尾,选择 Run SysprepShutdown 复选框。Sysprep 工具通过生成操作系统 ID (供某些 Microsoft 服务使用)使实例是唯一的。

    重要

    红帽不提供对 Cloudbase-Init 的技术支持。如果您遇到问题,请联系 Cloudbase Solutions

    当 Windows 系统关闭时,& lt;windows-image.qcow 2> 镜像文件已准备好上传到镜像服务。有关将此 镜像上传到 RHOSP 部署的更多信息,请参阅将镜像上传到镜像服务

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.