允许 ramdisk 部署用户指定他们的启动 ISO

https://storyboard.openstack.org/#!/story/2007633

在支持虚拟媒体的情况下,有时操作员可能希望使用特定的虚拟媒体镜像启动机器,以便于机器部署,甚至只是完成固件升级等操作。

提供一个接口来指示“启动到这个”iso,似乎是合乎逻辑的。

问题描述

问题详细描述

  • ramdisk 部署接口允许用户定义一个内核和 ramdisk,用于启动 ramdisk 实例,在初始部署之后,该实例被认为是一个处于活动状态的已部署机器。

  • 目前,由于 ramdisk 部署接口的限制,用户无法为虚拟媒体指定 ISO。他们必须提供一个内核/ramdisk,并且在虚拟媒体的情况下,必须重新构建它。

提议的变更

  • 允许利用 instance_info/boot_iso 参数作为用于从显式 ISO 镜像启动的媒介,该镜像将被 conductor 支持下载、缓存和提供给裸机。

  • 教导与传递相关的代码提供相同的基础能力,通过分解 ISO、将参数附加到 grub2isolinux 配置中,并重新打包 ISO 文件以进行部署,来实现这一点。

备选方案

  • 使用外部配置工具,并在适用时将节点 adopt 到 Ironic 中。

  • 预先掌握的机器特定配置到 ISO 镜像中,最终将准备和执行工作负载推送到 API 用户。

数据模型影响

无,这利用了现有的数据模型。

状态机影响

REST API 影响

无,此更改利用了 Ironic 数据模型中现有的 JSON 数据字段。

客户端 (CLI) 影响

“openstack baremetal” CLI

“openstacksdk”

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

安全影响

其他最终用户影响

可扩展性影响

如果用户请求多个并发部署,配置注入可能会消耗大量的磁盘空间,存在这种可能性。

此外,我们可能希望启用某种逻辑来防止 conductor 消耗过多的磁盘空间,出于清理的原因,但是 conductor 无法真正理解这是否是永久使用,或者不是。理想情况下,操作员文档应该更新,以帮助规划这种情况下的扩展。或者,我们可能希望引入一个“一次性”指示标志,这样我们就不会在活动机器上接管后尝试持久化 ISO。

性能影响

大量并发部署可能会由于整体系统性能限制而使 conductor 变慢,具体取决于使用的选项和设置。

其他部署者影响

开发人员影响

预计没有,但是我们可能会专注于在 redfish 虚拟媒体代码路径中实现这一点,并且应该尝试确保我们不要使这些更改 redfish 接口特定,因为 Ironic 中存在支持虚拟媒体的其他驱动程序。

实现

负责人

主要负责人

Julia Kreger <juliaashleykreger@gmail.com>

工作项

  • 实现支持将显式启动 ISO 传递到 ramdisk 接口。

  • 实现支持将配置注入到启动 ISO 中。

  • 记录 ramdisk 接口的功能,包括如何利用此功能。

依赖项

测试

单元测试足以确保此功能没有损坏。

一个 tempest 测试也可能是可行的,但我们可能希望与 Metal3 社区合作进行集成测试,因为最终这本质上只是在利用虚拟媒体和 ramdisk 接口时的一个集成测试项目。

升级和向后兼容性

N/A

文档影响

我们将要更新 ramdisk 部署接口的文档,以详细说明此功能。

参考资料