启动 Ramdisk 或 ISO¶
Ironic 支持启动用户提供的 ramdisk 或 ISO 镜像(从 Victoria 版本开始),而不是部署节点。最常见的情况是通过 PXE、iPXE 或虚拟介质启动实例,本地存储的内容仅存在于内存中。它受 pxe、ipxe、redfish-virtual-media 和 ilo-virtual-media 启动接口的支持。
配置¶
Ramdisk/ISO 启动需要使用 ramdisk 部署接口。从 Zed 版本周期开始,默认情况下启用它。在早期版本中,必须显式启用它
[DEFAULT]
...
enabled_deploy_interfaces = direct,ramdisk
...
启用后,并且 Conductor(s) 已重新启动,可以在创建新节点时设置该接口
baremetal node create --driver <driver> \
--deploy-interface ramdisk \
--boot-interface ipxe
或更新现有节点
baremetal node set <NODE> --deploy-interface ramdisk
您还可以将其与 redfish 虚拟介质 一起使用,而不是 iPXE。
创建 Ramdisk¶
可以使用 ironic-python-agent-builder 中的 ironic-ramdisk-base 元素来创建 ramdisk,例如使用 Debian
export ELEMENTS_PATH=/opt/stack/ironic-python-agent-builder/dib
disk-image-create -o /output/ramdisk \
debian-minimal ironic-ramdisk-base openssh-server dhcp-all-interfaces
您应该考虑使用以下元素
openssh-server 来安装 SSH 服务器,因为某些最小镜像默认情况下不提供它。
devuser 或 dynamic-login 来提供 SSH 访问权限。
dhcp-all-interfaces 或 simple-init 来配置网络。
生成的 文件(在本例中为 /output/ramdisk.kernel 和 /output/ramdisk.initramfs)然后可以在 启动 ramdisk 时使用。
启动 Ramdisk¶
像往常一样传递内核和 ramdisk,同时将 ramdisk 作为镜像源提供,例如,
baremetal node set <NODE> \
--instance-info kernel=http://path/to/ramdisk.kernel \
--instance-info ramdisk=http://path/to/ramdisk.initramfs
baremetal node deploy <NODE>
启动 ISO¶
ramdisk 部署接口也可用于启动 ISO 镜像。例如,
baremetal node set <NODE> \
--instance-info boot_iso=http://path/to/boot.iso
baremetal node deploy <NODE>
注意
虽然此接口示例使用 HTTP URL,但与所有引用 instance_info 字段中的文件工件的字段一样,用户可以使用文件路径 URL、HTTPS URL 或 Glance Image Service 对象 UUID 来请求文件。
警告
当与 ipxe boot_interface 结合使用时,此功能只会允许从提供的 ISO 文件启动内核和 ramdisk。在操作系统启动后,任何其他内容(例如额外的 ramdisk 内容或安装程序包文件)都将不可用。希望利用此功能的运营商应探索使用标准的 ramdisk deploy_interface 以及 instance_info/kernel_append_params 设置,以传递任意设置,例如初始 ramdisk 加载数据的镜像 URL。这是 iPXE 和操作系统的整体启动过程的限制,其中 iPXE 分配的内存会被释放。
在选择启动 ISO 时,您的 ISO 镜像需要足以在正常情况下启动硬件。例如,如果 ISO 仅与 BIOS 启动兼容,则 UEFI 模式下的主机将无法启动。这不是 Ironic 的限制,而是架构限制。
默认情况下,Bare Metal 服务将本地缓存 ISO 并从其 HTTP 服务器提供服务。如果您想避免这种情况,请设置以下内容
baremetal node set <NODE> \
--instance-info ramdisk_image_download_source=http
ISO 镜像也会跨部署进行缓存,类似于正常实例镜像的缓存方式。URL 连同最后的修改响应头一起用于确定是否需要更新镜像。
限制¶
预期用途是用于高级科学和临时工作负载,其中不需要或不需要将镜像写入本地存储的步骤。因此,此接口确实有一些注意事项
使用网络启动时,不支持配置驱动器,仅支持 Redfish 虚拟介质。
磁盘镜像内容不会写入裸机节点。
希望利用此接口的用户和运营商应期望利用元数据服务、自定义 ramdisk 镜像或
instance_info/ramdisk_kernel_arguments参数,以向内核引导命令行添加选项。在使用 PXE/iPXE 启动时,裸机节点必须继续访问 PXE 和 iPXE 网络资源。这与大多数启用租户网络的配置相反,在该配置中,对这些资源的访问仅限于配置和清理网络
与所有部署接口一样,节点会自动清理,并且在部署之间会擦除任何本地存储的内容。
常用选项¶
禁用 Ramdisk ISO 启动的持久启动设备¶
对于 ISO 启动,Ironic 将引导目标设置为持续从通过虚拟介质附加的 ISO 启动。此行为并非始终是期望的,例如,如果 vmedia 正在安装到硬盘驱动器然后重新启动。为了而是将虚拟介质设置为单次启动,Ironic 在节点的 driver_info 中提供了 force_persistent_boot_device 标志。它可以设置为 Never
$ openstack baremetal node set --driver-info force_persistent_boot_device='Never' <node>