代理驱动的镜像分区支持¶
https://blueprints.launchpad.net/ironic/+spec/partition-image-support-for-agent-driver
此蓝图建议增强代理驱动,以支持部署分区镜像,后续启动通过驱动程序指定的 pxe 或 vmedia 进行。
问题描述¶
目前代理驱动仅支持可以部署到裸机上的整个磁盘镜像。使用基于磁盘镜像的部署,后续启动将从本地硬盘进行。Ironic 无法控制已配置裸机节点的后续启动。
提议的变更¶
代理驱动通过查找镜像属性 kernel_id 和 ramdisk_id 来验证指定的镜像类型是否为分区镜像(raw 格式)。
通过 image_info 将分区信息(根分区、交换分区等)发送到代理 ramdisk。
收到分区信息后,代理 ramdisk 将在给定的 os_install 磁盘上工作,并将分区镜像复制到根分区。
代理 ramdisk 将 root_uuid 发送回控制器上的代理驱动程序。
部署后,代理驱动程序准备后续启动的配置,使用驱动程序定义的 pxe 或 vmedia。agent_ipmitool 和 agent_ilo 驱动程序都应支持使用分区镜像进行部署。
将分区代码从 ironic 提取到不同的库中,并在 IPA 和 ironic 代码库中使用它。
备选方案¶
我们可以使用 iscsi 方法将分区镜像写入目标磁盘。我们需要代理 ramdisk 支持 iscsi,类似于 ironic DIB 元素。
数据模型影响¶
无。
状态机影响¶
无。
REST API 影响¶
无。
客户端 (CLI) 影响¶
无。
RPC API 影响¶
无。
驱动程序 API 影响¶
无。
Nova 驱动程序影响¶
无。
Ramdisk 影响¶
N/A
安全影响¶
无。
其他最终用户影响¶
在由代理管理的节点上部署分区镜像的能力。
可扩展性影响¶
无。
性能影响¶
无。
其他部署者影响¶
无。
开发人员影响¶
无。
实现¶
负责人¶
- 主要负责人
faizan-barmawer
- 其他贡献者
无
工作项¶
将分区代码从 ironic 提取到 IPA 和 ironic 代码库的公共库中。
将 ironic/common 中的磁盘分区代码移动到 oslo incubator 项目中,作为 oslo.libironic
ironic/common/disk_partitioner.py
来自 ironic/drivers/modules/deploy_utils.py 的一些常见磁盘相关函数
相关的测试用例。
在 IPA 中使用 oslo.libironic
对代理驱动程序公共代码进行必要的更改,例如验证、部署等。
对 agent_ipmitool 驱动程序进行必要的更改,以生成正确的 pxe 配置,用于后续重启。
对 agent_ilo 驱动程序进行必要的更改,以生成用于后续重启的 iso 文件。
更改 IPA(代理 ramdisk),以识别传入的镜像信息并采取适当的操作以在磁盘上部署分区镜像。
依赖项¶
测试¶
使用 agent_ilo 和 agent_ipmitool 驱动程序进行分区镜像的单元测试。
在 tempest/devstack 中添加使用分区镜像的特定代理驱动程序测试用例。
升级和向后兼容性¶
文档影响¶
更改 ironic 安装指南。