将镜像添加到 Image 服务¶
支持的镜像格式¶
Ironic 官方支持并测试使用 qcow2 格式的镜像以及 raw 格式的镜像。其他类型的磁盘镜像,例如 vdi 和单个文件 vmdk 文件,已被用户报告在特定情况下可用,但未在上游进行测试。我们建议操作员转换镜像并正确将其上传到 Glance。
Ironic 使用 ironic.conf 中的 [conductor]permitted_image_formats 选项来强制执行支持和允许的镜像格式列表。此设置默认为“raw”和“qcow2”。
Glance 检测到的格式与磁盘镜像文件的实际内容检测到的格式不匹配,将导致部署失败。要纠正这种情况,必须重新上传镜像,并更正声明的 --disk-format 或实际的镜像文件格式。
实例(最终用户)镜像¶
按照 创建实例镜像 中描述的方式构建或下载用户镜像。
将所有创建的镜像加载到 Image 服务中,并记录每个镜像生成后在 Image 服务中的镜像 UUID。
注意
Ironic 使用的 Glance 中的镜像必须被标记为 public,这需要 Glance 镜像服务的管理员权限才能设置。
注意
从 2025.2 版本开始,Ironic conductor 可以访问与其项目共享的镜像,除了它拥有的镜像之外。
要使用此功能,请确保所需的镜像已与 conductor 凭据关联的项目共享。
对于整盘镜像,只需上传镜像
$ openstack image create my-whole-disk-image --public \ --disk-format qcow2 --container-format bare \ --file my-whole-disk-image.qcow2
警告
对于整盘镜像,不得设置内核/ramdisk 对,否则它们将被误认为是分区镜像。
对于仅与本地启动(默认)一起使用的分区镜像,必须设置
img_type属性$ openstack image create my-image --public \ --disk-format qcow2 --container-format bare \ --property img_type=partition --file my-image.qcow2
对于与本地和网络启动一起使用的分区镜像
将内核和 ramdisk 镜像添加到 Image 服务
$ openstack image create my-kernel --public \ --disk-format raw --container-format bare --file my-image.vmlinuz
将上述步骤中获得的镜像 uuid 存储为
MY_VMLINUZ_UUID。$ openstack image create my-image.initrd --public \ --disk-format raw --container-format bare --file my-image.initrd
将上述步骤中获得的镜像 UUID 存储为
MY_INITRD_UUID。将my-image 添加到 Image 服务,它将是用户将要运行的操作系统。还将上述创建的镜像与此操作系统镜像关联。可以通过执行以下命令来完成这两个操作
$ openstack image create my-image --public \ --disk-format qcow2 --container-format bare --property \ kernel_id=$MY_VMLINUZ_UUID --property \ ramdisk_id=$MY_INITRD_UUID --file my-image.qcow2
部署 ramdisk 镜像¶
构建或下载部署镜像
部署镜像最初用于准备服务器(创建磁盘分区),然后再部署实际的操作系统。
有几种方法可以构建或下载部署镜像,请阅读 构建或下载部署 ramdisk 镜像 部分。
将部署镜像添加到 Image 服务
将部署内核和 ramdisk 镜像添加到 Image 服务
$ openstack image create deploy-vmlinuz --public \ --disk-format raw --container-format bare \ --file ironic-python-agent.vmlinuz
将上述步骤中获得的镜像 UUID 存储为
DEPLOY_VMLINUZ_UUID(或者在使用节点架构指定的参数时使用不同的名称)。$ openstack image create deploy-initrd --public \ --disk-format raw --container-format bare \ --file ironic-python-agent.initramfs
将上述步骤中获得的镜像 UUID 存储为
DEPLOY_INITRD_UUID(或者在使用节点架构指定的参数时使用不同的名称)。配置 Bare Metal 服务以使用生成的镜像。可以按节点进行描述,如 使用 Ironic 注册硬件 中所述,或者在配置文件中使用字典按架构(与节点的
cpu_arch属性匹配)指定它们,如下所示[conductor] deploy_kernel_by_arch = x86_64:<DEPLOY_VMLINUZ_X86_64_UUID>,aarch64:<DEPLOY_VMLINUZ_AARCH64_UUID> deploy_ramdisk_by_arch = x86_64:<DEPLOY_INITRD_X86_64_UUID>,aarch64:<DEPLOY_INITRD_AARCH64_UUID>
或者全局使用常规配置参数
[conductor] deploy_kernel = <insert DEPLOY_VMLINUZ_UUID> deploy_ramdisk = <insert DEPLOY_INITRD_UUID>
如果同时定义了常规参数和按架构指定的参数,则按架构指定的参数优先。