在 ironic 中使 ilo 驱动程序独立,移除 swift 依赖¶
https://blueprints.launchpad.net/ironic/+spec/remove-swift-dependency-for-ilo-drivers
本规范建议移除 ilo 虚拟媒体驱动程序对 swift 的硬依赖。Ironic 存在独立的用例(例如 bifrost),这些用例能够在不依赖其他 Openstack 服务的情况下部署节点。通过此规范,ilo 虚拟媒体驱动程序也可以像 ironic 中的其他驱动程序一样独立工作。
问题描述¶
目前,ilo 驱动程序(iscsi_ilo 和 agent_ilo)需要 swift 来托管镜像,例如启动 ISO(实例从中启动)和软盘镜像(用于将参数传递给部署 ramdisk)。
提议的变更¶
ilo 驱动程序(iscsi_ilo 和 agent_ilo)可以使用 Web 服务器来托管所需的镜像。Swift 将作为默认后端来托管这些驱动程序的启动 ISO 和软盘镜像。
在部署过程中自动创建的 boot_iso(如 iscsi_ilo 启动实例所必需)和软盘镜像(如 agent_ilo 和 iscsi_ilo 传递参数给部署 ramdisk 所必需),将根据 ironic.conf 中
[ilo]下的配置变量托管在 swift 或 http Web 服务器上。use_http_web_server_for_images=True
默认值将为
False,默认使用 swift。用户需要手动配置 Web 服务器,并在 ironic.conf 的
[deploy]下添加配置选项,如下所示:http_server_root = /opt/stack/ironic/data/httpboot http_server_url = http://10.10.1.30/httpboot
由于相同的配置变量存在于
[pxe]下,并且 ilo 驱动程序需要它们才能独立运行,因此我们可以在[pxe]中弃用它们,并将其移动到[deploy]下。上述配置变量的值仅为示例。它们将继续具有与当前配置变量http_url和http_root相同的默认值。为 ilo 驱动程序添加 take_over() 的功能。这是为了启用当 conductor 节点宕机,其他 conductor 接管裸机时的情况。take_over() 将实现以下场景的重新生成:
对于 wait_call_back 状态:实现软盘镜像的重新生成。
对于 active 状态:实现启动 ISO 的重新生成。
备选方案¶
无。
数据模型影响¶
无。
状态机影响¶
无。
REST API 影响¶
无。
客户端 (CLI) 影响¶
无。
RPC API 影响¶
无。
驱动程序 API 影响¶
无。
Nova 驱动程序影响¶
无。
安全影响¶
无。
其他最终用户影响¶
无。
可扩展性影响¶
无。
性能影响¶
无。
其他部署者影响¶
http Web 服务器的配置不在 ironic 的范围内,但应在每个 conductor 节点上进行配置。用户需要手动配置 Web 服务器,并在 ironic.conf 的 [deploy] 下添加配置选项,如下所示:
http_server_root = /opt/stack/ironic/data/httpboot
http_server_url = http://10.10.1.30/httpboot
由于相同的配置变量存在于 [pxe] 下,并且 ilo 驱动程序需要它们才能独立运行,因此我们可以在 [pxe] 中弃用它们,并将其移动到 [deploy] 下。
开发人员影响¶
无。
实现¶
负责人¶
- 主要负责人
agarwalnisha1980
工作项¶
修改 ipxe 以使用
[deploy]部分的配置变量。启用在 ilo 驱动程序中使用 Web 服务器的支持。
对于
use_web_server=True,为 ilo_drivers 实现 take_over()。
依赖项¶
无。
测试¶
将添加模拟单元测试。
将进行功能测试,以确保使用 swift 作为后端或 http Web 服务器作为后端的 ilo 驱动程序的部署正常工作。
升级和向后兼容性¶
ilo 驱动程序将继续与 swift 作为后端一起工作。iPXE 代码将继续适用于任何部分的配置选项。
文档影响¶
需要进行文档记录。
参考资料¶
无。