第 2 章 管理镜像
Image 服务(glance)为磁盘和服务器镜像提供发现、注册和交付服务。它提供复制或快照服务器镜像并立即存储它的功能。您可以将存储的镜像用作模板,比安装服务器操作系统和单独配置服务,快速、一致地编写新的服务器。
2.1. 创建镜像 复制链接链接已复制到粘贴板!
要创建镜像,您可以使用 Red Hat Enterprise Linux (RHEL)基于内核的虚拟机(KVM)客户机镜像,或者您可以使用 RHEL ISO 文件或 Windows ISO 文件以 QCOW2 格式手动创建 Red Hat OpenStack Platform (RHOSP)兼容镜像。
2.1.1. 在 Red Hat OpenStack Platform 中使用 KVM 客户机镜像 复制链接链接已复制到粘贴板!
您可以使用以下可用的 Red Hat Enterprise Linux (RHEL)基于内核的虚拟机(KVM)客户机 QCOW2 镜像之一:
这些镜像使用 cloud-init 配置,且必须利用 EC2 兼容元数据服务来调配 SSH 密钥才能正常工作。
就绪的 Windows KVM 客户机 QCOW2 镜像不可用。
对于 KVM 客户机镜像:
-
镜像中的
root帐户被取消激活,但sudo访问权限被赋予一个名为cloud-user的特殊用户。 -
此映像没有设置
root密码。
通过将 !! 放置到第二个字段中,将 root 密码锁定在 /etc/shadow 中。
对于 Red Hat OpenStack Platform (RHOSP)实例,从 RHOSP 仪表板或命令行生成 SSH 密钥对,并使用该密钥组合以 root 用户身份对实例执行 SSH 公钥身份验证。
当您启动实例时,此公钥会注入到其中。然后,您可以使用创建密钥对时下载的私钥进行身份验证。
2.1.2. 创建自定义 Red Hat Enterprise Linux 或 Windows 镜像 复制链接链接已复制到粘贴板!
要创建自定义 Red Hat Enterprise Linux (RHEL)或 Windows 镜像,请确保您有以下先决条件。
先决条件
- 创建镜像的 Linux 主机。这可以是您可以在其中安装和运行 Linux 软件包的任何机器,但 undercloud 或 overcloud 除外。
advanced-virt 存储库已启用:
sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpms
$ sudo subscription-manager repos --enable=advanced-virt-for-rhel-8-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
virt-manager应用程序以拥有创建客户机操作系统所需的所有软件包:sudo dnf module install -y virt
$ sudo dnf module install -y virtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 已安装
libguestfs-tools软件包,以便具有访问和修改虚拟机镜像的一组工具:sudo dnf install -y libguestfs-tools-c
$ sudo dnf install -y libguestfs-tools-cCopy to Clipboard Copied! Toggle word wrap Toggle overflow - RHEL 9 或 8 ISO 文件或者 Windows ISO 文件。有关 RHEL ISO 文件的更多信息,请参阅 RHEL 9.0 Binary DVD 或 RHEL 8.6 Binary DVD。如果您没有 Windows ISO 文件,请参阅 Microsoft Evaluation Center 以下载评估镜像。
-
文本编辑器(如果您想更改
kickstart文件(仅限 RHEL)。
如果在 undercloud 上安装 libguestfs-tools 软件包,请禁用 iscsid.socket,以避免与 undercloud 上的 tripleo_iscsid 服务的端口冲突:
sudo systemctl disable --now iscsid.socket
$ sudo systemctl disable --now iscsid.socket
2.1.3. 创建 Red Hat Enterprise Linux 9 镜像 复制链接链接已复制到粘贴板!
使用 Red Hat Enterprise Linux (RHEL) 9 ISO 文件,以 QCOW2 格式手动创建 Red Hat OpenStack Platform (RHOSP)兼容镜像。
您必须在主机上使用 [root@host] ""运行所有命令。
流程
使用
virt-install开始安装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将尖括号 <
;> 中的值替换为 RHEL 9 镜像的正确值。这个命令启动一个实例并启动安装过程。
注意如果实例没有自动启动,请运行
virt-viewer命令来查看控制台:virt-viewer <rhel9>
[root@host]# virt-viewer <rhel9>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置实例:
- 在初始安装程序引导菜单中,选择 Install Red Hat Enterprise Linux 9。
- 选择相应的 Language 和 Keyboard 选项。
- 当系统提示输入安装所使用的设备类型时,请选择" 自动探测到的安装介质 "。
- 当系统提示安装目的地类型时,请选择 Local Standard Disks。对于其他存储选项,请选择 Automatically configure partitioning。
- 选择 基本服务器 安装,它将安装 SSH 服务器。
- 对于网络和主机名,选择 eth0 作为网络,然后选择设备的主机名。默认主机名是 localhost.localdomain。
在 Root Password 字段中输入密码,并在 Confirm 字段中再次输入相同的密码。
- 结果
- 安装过程将完成,并显示 Complete! 屏幕。
- 安装完成后,重启实例并以 root 用户身份登录。
更新
/etc/sysconfig/network-scripts/ifcfg-eth0文件,使其只包含以下值:TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=noCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启机器。
使用 Content Delivery Network 注册机器。
sudo subscription-manager register sudo subscription-manager attach --pool=Valid-Pool-Number-123456 sudo subscription-manager repos --enable=rhel-9-server-rpms
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-9-server-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新系统:
dnf -y update
# dnf -y updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
cloud-init软件包:dnf install -y cloud-utils-growpart cloud-init
# dnf install -y cloud-utils-growpart cloud-initCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/cloud/cloud.cfg配置文件并在cloud_init_modules下添加以下内容:- resolv-conf
- resolv-confCopy to Clipboard Copied! Toggle word wrap Toggle overflow resolv-conf选项在第一次启动时自动配置resolv.conf文件。此文件包含与实例相关的信息,如名称服务器、域和其他选项。在
/etc/sysconfig/network中添加以下行,以避免访问 EC2 元数据服务时出现问题:NOZEROCONF=yes
NOZEROCONF=yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要确保控制台信息会在仪表板的 Log 标签页和
nova console-log输出中显示,请在/etc/default/grub文件中添加以下引导选项:GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
grub2-mkconfig命令:grub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 取消注册实例,以便生成的镜像不包含此实例的订阅详情:
subscription-manager repos --disable=* subscription-manager unregister dnf clean all
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 关闭实例:
poweroff
# poweroffCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
virt-sysprep命令重置和清理镜像,以便它可用于在没有问题的情况下创建实例:virt-sysprep -d <rhel9>
[root@host]# virt-sysprep -d <rhel9>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将磁盘镜像中的任何可用空间转换为主机中的可用空间来减小镜像大小:
virt-sparsify \ --compress <rhel9.qcow2> <rhel9-cloud.qcow2>
[root@host]# virt-sparsify \ --compress <rhel9.qcow2> <rhel9-cloud.qcow2>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令会在运行命令的位置创建一个新的 <
rhel9-cloud.qcow2> 文件。注意您必须根据应用到实例的类别中的磁盘空间,手动调整实例的分区大小。
& lt;rhel9-cloud.qcow 2> 镜像文件已准备好上传到镜像服务。有关将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像。
2.1.4. 创建 Red Hat Enterprise Linux 8 镜像 复制链接链接已复制到粘贴板!
使用 Red Hat Enterprise Linux (RHEL) 8 ISO 文件,以 QCOW2 格式手动创建 Red Hat OpenStack Platform (RHOSP)兼容镜像。
您必须在主机上使用 [root@host] ""运行所有命令。
流程
使用
virt-install开始安装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将尖括号 <
;> 中的值替换为 RHEL 8 镜像的正确值。这个命令启动一个实例并启动安装过程。
注意如果实例没有自动启动,请运行
virt-viewer命令来查看控制台:virt-viewer <rhel86-cloud-image>
[root@host]# virt-viewer <rhel86-cloud-image>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置实例:
在初始安装程序引导菜单中,选择" 安装或升级现有系统 "并按照安装提示进行操作。接受默认值。
磁盘安装程序提供在安装前测试安装介质的选项。选择 OK 以运行 test 或 Skip 以继续测试。
- 选择相应的 Language 和 Keyboard 选项。
- 当提示输入安装所使用的设备类型时,请选择 基本存储设备。
-
为您的设备选择一个主机名。默认主机名是
localhost.localdomain。 -
设置 时区和
root密码。 - 根据磁盘上的空格,从需要安装类型的选项中选择 您需要的安装类型? 窗口。
- 选择 基本服务器 安装,它将安装 SSH 服务器。
- 安装过程完成并显示 Congratulations,则代表您的 Red Hat Enterprise Linux 安装已完成。
-
重新启动实例,然后以
root用户身份登录。 更新
/etc/sysconfig/network-scripts/ifcfg-eth0文件,使其只包含以下值:TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=noCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 重启机器。
使用 Content Delivery Network 注册机器:
sudo subscription-manager register sudo subscription-manager attach --pool=Valid-Pool-Number-123456 sudo subscription-manager repos --enable=rhel-8-server-rpms
# sudo subscription-manager register # sudo subscription-manager attach --pool=Valid-Pool-Number-123456 # sudo subscription-manager repos --enable=rhel-8-server-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更新系统:
dnf -y update
# dnf -y updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
cloud-init软件包:dnf install -y cloud-utils-growpart cloud-init
# dnf install -y cloud-utils-growpart cloud-initCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/cloud/cloud.cfg配置文件,并在cloud_init_modules下添加以下内容。- resolv-conf
- resolv-confCopy to Clipboard Copied! Toggle word wrap Toggle overflow resolv-conf选项在第一次启动时自动配置resolv.conf文件。此文件包含与实例相关的信息,如名称服务器、域和其他选项。要防止网络问题,请创建
/etc/udev/rules.d/75-persistent-net-generator.rules:echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules
# echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这可防止
/etc/udev/rules.d/70-persistent-net.rules文件被创建。如果创建了/etc/udev/rules.d/70-persistent-net.rules文件,当您从快照引导时,网络可能无法正常工作,因为网络接口是作为eth1而不是eth0创建的,并且没有分配 IP 地址。在
/etc/sysconfig/network中添加以下行,以避免访问 EC2 元数据服务时出现问题:NOZEROCONF=yes
NOZEROCONF=yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要确保控制台信息会在仪表板的 Log 标签页和
nova console-log输出中显示,请在/etc/grub.conf文件中添加以下引导选项:console=tty0 console=ttyS0,115200n8
console=tty0 console=ttyS0,115200n8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 取消注册虚拟机,以便生成的镜像不包含此实例的相同订阅详情:
subscription-manager repos --disable=* subscription-manager unregister dnf clean all
# subscription-manager repos --disable=* # subscription-manager unregister # dnf clean allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 关闭实例:
poweroff
# poweroffCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
virt-sysprep命令重置和清理镜像,以便它可用于在没有问题的情况下创建实例:virt-sysprep -d <rhel86-cloud-image>
[root@host]# virt-sysprep -d <rhel86-cloud-image>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
virt-sparsify命令减少镜像大小。这个命令将磁盘镜像中的任何可用空间重新转换为主机中的可用空间:virt-sparsify \ --compress <rhel86.qcow2> <rhel86-cloud.qcow2>
[root@host]# virt-sparsify \ --compress <rhel86.qcow2> <rhel86-cloud.qcow2>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令会在运行命令的位置创建一个新的 <
rhel86-cloud.qcow2> 文件。注意您必须根据应用到实例的类别中的磁盘空间,手动调整实例的分区大小。
& lt;rhel86-cloud.qcow 2> 镜像文件已准备好上传到镜像服务。有关将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像。
2.1.5. 创建 Windows 镜像 复制链接链接已复制到粘贴板!
使用 Windows ISO 文件,以 QCOW2 格式手动创建兼容 Red Hat OpenStack Platform (RHOSP)兼容镜像。
您必须在主机上使用 [root@host] ""运行所有命令。
流程
使用
virt-install开始安装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 替换
virt-install参数的值:-
<name> rhacm-5-4 Windows 实例具有的名称。 -
<size> HEKETI-wagondisk 大小(以 GB 为单位)。 -
<path> swig- swig the path to the Windows install ISO file. <RAM> HEKETI-5-4the 请求 RAM 量(以 MB 为单位)。注意the
-os-type=windows参数确保为 Windows 客户机正确配置了时钟,并启用其 Hyper-V enlightenment 功能。在将镜像上传到镜像服务(glance)之前,还必须在镜像元数据中设置os_type=windows。
-
virt-install命令将客户机镜像保存为/var/lib/libvirt/images/<name> .qcow2。如果要将客户机镜像保留在其他位置,请更改 the-disk 选项的参数:--disk path=<filename>,size=<size>
--disk path=<filename>,size=<size>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<filename> 替换为存储实例镜像的文件名称,以及可选的路径。例如,path=win8.qcow2,size=8在当前工作目录中创建一个名为win8.qcow2的 8 GB 文件。提示如果客户机没有自动启动,请运行
virt-viewer命令来查看控制台:virt-viewer <name>
[root@host]# virt-viewer <name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关如何安装 Windows 的更多信息,请参阅相关的 Microsoft 文档。
-
要允许新安装的 Windows 系统使用虚拟化硬件,您可能需要安装 VirtIO 驱动程序。为此,请将镜像作为 CD-ROM 驱动器附加到 Windows 实例来安装镜像。要安装
virtio-win软件包,您必须将 VirtIO ISO 镜像添加到实例中,并安装 VirtIO 驱动程序。如需更多信息,请参阅 配置和管理虚拟化 中的 为 Windows 虚拟机安装 KVM 半虚拟驱动程序。 要完成配置,请在 Windows 系统上下载并执行 Cloudbase-Init。在安装 Cloudbase-Init 结束时,选择 Run Sysprep 和 Shutdown 复选框。
Sysprep工具通过生成 OS ID (供某些 Microsoft 服务使用)使客户机是唯一的。重要红帽不提供 Cloudbase-Init 的技术支持。如果您遇到问题,请参阅 Cloudbase Solutions 联系。
当 Windows 系统关闭时,< ;name>.qcow2 镜像文件已准备好上传到镜像服务。有关将此镜像上传到 RHOSP 部署的更多信息,请参阅 上传镜像。
2.1.5.1. 元数据属性 复制链接链接已复制到粘贴板!
Compute 服务(nova)已弃用对使用 libosinfo 数据设置默认设备模型的支持。反之,使用以下镜像元数据属性为实例配置最佳虚拟硬件:
-
os_distro -
os_version -
hw_cdrom_bus -
hw_disk_bus -
hw_scsi_model -
hw_vif_model -
hw_video_model -
hypervisor_type
有关这些元数据属性的更多信息,请参阅 镜像配置参数。
2.1.6. 为 UEFI 安全引导创建镜像 复制链接链接已复制到粘贴板!
当 overcloud 包含 UEFI 安全引导 Compute 节点时,您可以创建一个安全引导实例镜像,供云用户用来启动安全引导实例。
流程
为 UEFI 安全引导创建新镜像:
openstack image create --file <base_image_file> uefi_secure_boot_image
$ openstack image create --file <base_image_file> uefi_secure_boot_imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<base_image_file> 替换为支持 UEFI 和 GUID 分区表(GPT)标准的镜像文件,并包括 EFI 系统分区。
-
将
如果默认机器类型不是
q35,则机器类型设置为q35:openstack image set --property hw_machine_type=q35 uefi_secure_boot_image
$ openstack image set --property hw_machine_type=q35 uefi_secure_boot_imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定实例必须调度到 UEFI 安全引导主机上:
openstack image set \ --property hw_firmware_type=uefi \ --property os_secure_boot=required \ uefi_secure_boot_image
$ openstack image set \ --property hw_firmware_type=uefi \ --property os_secure_boot=required \ uefi_secure_boot_imageCopy to Clipboard Copied! Toggle word wrap Toggle overflow