创建实例镜像¶
裸机配置需要两组镜像:部署镜像和用户镜像。 部署镜像由裸机服务用于准备裸机服务器以进行实际的操作系统部署。 而用户镜像安装在裸机服务器上,供最终用户使用。 有两种类型的用户镜像
- 分区镜像
仅包含根分区的的内容。 此外,在从网络启动时,还会与它们一起使用带有内核和带有 initramfs 的镜像。
警告
要使用分区镜像,必须在镜像中安装 Grub2。 这不是推荐的路径。
- 整盘镜像
包含带有一个或多个分区的完整分区表。
警告
内核/initramfs 对不应用于整盘镜像,否则它们将被误认为是分区镜像。 整盘镜像是推荐使用的镜像类型。
许多发行版发布自己的云镜像。 这些通常是为传统启动模式(非 UEFI)构建的整盘镜像,Ubuntu 是例外(它们发布适用于两种模式的镜像)。
支持的磁盘镜像格式¶
以下格式经过 Ironic 测试,只要不使用未知或不安全的特殊功能,预计可以正常工作
raw - 一个文件,包含字节,就像它们存在于磁盘或其他块存储设备上一样。 这是最简单的格式。
qcow2 - 基于 QEMU Copy-on-Write 格式的更新文件格式。
对于格式为 iso 的“CD”镜像,有特别说明。 虽然 Ironic 在其某些流程中使用 ISO9660 文件系统来处理虚拟介质等内容,但它不支持将它们写入远程块存储设备。
我们认为可能有效,但未进行测试的镜像格式
vmdk - VMware 为其虚拟机产品线创建的原始镜像格式派生的文件格式。 具体来说,我们认为单个文件 VMDK 格式的镜像应该可以工作。 由于存在多种子格式,其中一些将无法工作,并可能导致意外行为,例如部署失败。
vdi - Oracle VM Virtualbox 虚拟机使用的文件格式。
由于 Ironic 不支持这些格式,因此默认情况下通常会出于安全考虑阻止其使用。 请咨询您的 Ironic 操作员。
重要的是要强调,Ironic 基于签名强制执行并匹配文件类型,而不是文件扩展名。 如果存在不匹配,则必须更正输入或远程服务记录,例如在镜像服务中。
disk-image-builder¶
可以使用 disk-image-builder 创建用于部署所需的用户镜像以及用户将要运行的实际操作系统。
安装 diskimage-builder 包(如果不想全局安装任何内容,请使用 virtualenv)
# pip install diskimage-builder
构建用户将运行的镜像(以 Ubuntu 镜像为例)
分区镜像
$ disk-image-create ubuntu baremetal dhcp-all-interfaces grub2 -o my-image
整盘镜像
$ disk-image-create ubuntu vm dhcp-all-interfaces -o my-image
…带有 EFI 分区
$ disk-image-create ubuntu vm block-device-efi dhcp-all-interfaces -o my-image
分区镜像命令会创建 my-image.qcow2、my-image.vmlinuz 和 my-image.initrd 文件。 分区镜像创建命令中的 grub2 元素仅在将使用本地启动来部署 my-image.qcow2 时才需要,否则镜像 my-image.vmlinuz 和 my-image.initrd 将用于在用 my-image.qcow2 部署裸机后进行 PXE 启动。 对于整盘镜像,仅使用主镜像。
如果想使用 Fedora 镜像,请将所选命令中的 ubuntu 替换为 fedora。
要构建其他发行版的镜像,请遵循整盘镜像的构建方法。
Rocky Linux 示例
如果使用 rocky-container 元素,请指定
openssh-server和cloud-init元素以启用使用密钥对的 ssh 登录,并指定growroot元素以调整磁盘大小。$ export DIB_CONTAINERFILE_PODMAN_ROOT=1 $ disk-image-create rocky-container vm dhcp-all-interfaces \ > block-device-efi openssh-server cloud-init growroot -o my-image
如果想使用 Alma Linux 镜像,请将所选命令中的 rocky-container 替换为 almalinux-container。
虚拟机¶
也可以使用虚拟机软件来构建用户镜像。 有不同的软件选项可用,qemu-kvm 通常是 Linux 平台上的一个不错的选择,它支持模拟许多设备,甚至可以通过软件模拟构建其他架构的镜像。 VirtualBox 是非 Linux 主机上的另一个不错的选择。
程序因使用的软件而异,但构建镜像的步骤类似,用户创建虚拟机,并像为实际硬件一样安装目标系统。 系统可以高度自定义,例如分区布局、驱动程序或已安装的软件等。
通常使用 libvirt 及其管理工具来简化与 qemu-kvm 的交互,例如使用 virt-install 创建虚拟机
$ virt-install --name centos8 --ram 4096 --vcpus=2 -f centos8.qcow2 \
> --cdrom CentOS-8-x86_64-1905-dvd1.iso
也可以使用图形前端,如 virt-manager。
系统设置并关机后,磁盘文件可以用作用户镜像。 磁盘文件的路径因使用的软件而异,通常存储在用户选择的本地文件系统的一部分中。 对于 qemu-kvm 或基于它的 GUI 前端,它通常存储在 /var/lib/libvirt/images。