iRMC Virtual Media Deploy Driver for Ironic

https://blueprints.launchpad.net/ironic/+spec/irmc-virtualmedia-deploy-driver

该提案介绍了在 Ironic 中添加对 FUJITSU PRIMERGY iRMC 集成远程管理控制器驱动程序部署功能所需的工作。

问题描述

FUJITSU PRIMERGY 服务器能够从虚拟介质启动,但 Ironic 缺乏可以利用此功能的驱动程序,以实现无需 PXE/TFTP 的部署。

提议的变更

添加新的 iRMC 驱动程序,即 iscsi_irmc 和 agent_irmc,以启用无需 PXE/TFTP 的部署功能,从而通过使用来自 Conductor 节点的 NFS 或 CIFS 启动虚拟介质来配置 PRIMERGY 裸机节点(具有 iRMC S4 及更高版本),以部署镜像。

iRMC 虚拟介质部署驱动程序基本上与 iLO 相同。但是,将 iRMC 部署驱动程序与 iLO 部署驱动程序进行比较,唯一的显著变化是虚拟介质镜像的位置,特别是部署 ISO 镜像、软盘 FAT 镜像和启动 ISO 镜像的位置。iRMC 部署驱动程序将创建的软盘 FAT 镜像和启动 ISO 镜像放置在 NFS 或 CIFS 服务器上,而 iLO 部署驱动程序将其创建在 Swift 对象存储服务上。iRMC 挂载这三个镜像的位置来自 NFS 或 CIFS 服务器,而 iLO 挂载的位置来自为 Swift 对象服务生成的 http 临时 URL。其他部分是通用的。

然而,在启动 Ironic Conductor 之前,部署者必须正确设置操作系统,以便 Ironic Conductor 将 NFS 或 CIFS 共享文件系统挂载到默认路径“/remote_image_share_root”上,该路径可以在 ironic 配置文件中进行配置。该驱动程序在启动时会检查此挂载。

只要 iRMC 和 Ironic Conductor 可以访问,NFS 或 CIFS 服务器就可以位于网络中的任何位置。NFS 或 CIFS 服务器和网络路径应该是冗余的,以便裸机节点不会因无法启动而失败。因此,不建议在高可用性环境中使用 Ironic Conductor 作为 NFS 或 CIFS 服务器。

iRMC 部署模块使用 python-scciclient 包 通过 HTTP/HTTPS POST 协议与 ServerView Common Command Interface (SCCI) 进行通信。

ServerView Common Command Interface (SCCI) 的详细信息在 FUJITSU Software ServerView Suite, Remote Management, iRMC S4 - integrated Remote Management Controller 中描述

备选方案

可以使用其他驱动程序,例如以下驱动程序,但没有驱动程序可以使用虚拟介质启动。

  • 用于 PXE (pxe_irmc) 的 iRMC 驱动程序,它可以以传统模式或 UEFI 模式启动。启动模式控制的详细信息在 iRMC Management Driver for Ironic 中描述。

  • 用于 PXE (pxe_ipmitool) 的 IPMI 驱动程序,它只能以传统模式启动。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

安全影响

  • 管理凭据将以未加密的形式存储在 Ironic 配置文件和数据库中,在执行 node-show 时,这些信息将显示在节点的 driver_info 字段中。但是,只有 ironic 管理员才能访问 Ironic 配置文件和数据库。

  • NFS 和 CIFS 具有非常相似的功能,但具有不同的安全模型。NFS 服务器根据 NFS 客户端主机 IP 地址对 NFS 客户端进行身份验证,而 CIFS 服务器根据用户身份对 CIFS 客户端进行身份验证。因此,该驱动程序将 CIFS 作为默认设置,并将 NFS 作为替代方案。高级部署者可以使用 NFSv4 和 Kerberos 根据用户身份对 NFS 客户端进行身份验证。详细信息可在每个 Linux 发行版的手册中找到 ([1], [2])

其他最终用户影响

可扩展性影响

如果管理大量裸机节点(例如超过 1,000 个节点),NFS 或 CIFS 服务器可能会成为性能瓶颈。在这种情况下,需要将负载分布和平衡到多个 NFS 或 CIFS 服务器设置中 (([3], [4], [5])

性能影响

其他部署者影响

  • 除了 iRMC Power Driver for Ironic 中定义的参数之外,以下参数需要在 Ironic 配置文件的 [irmc] 部分中指定,该文件通常位于 /etc/ironic/ironic.conf 中

    • remote_image_share_root: Ironic 计算节点的 NFS 或 CIFS 根路径(字符串值)。默认值为“/remote_image_share_root”。

    • remote_image_server: 远程镜像服务器的 IP 地址

    • remote_image_share_type: 虚拟介质的共享类型(NFS 或 CIFS)。默认值为“CIFS”。

    • remote_image_share_name: remote_image_server 的共享名称。默认值为“share”。

    • remote_image_user_name: remote_image_server 的用户名

    • remote_image_user_password: remote_image_user_name 的密码

    • remote_image_user_domain: remote_image_user_name 的域名。默认值为“”。

  • 除了 iRMC Power Driver for Ironic 中定义的字段之外,以下 driver_info 字段是支持 iRMC 虚拟介质所必需的。

    • irmc_deploy_iso: 部署 ISO 镜像,可以是相对于 remote_image_share_root 的文件名、Glance UUID、Glance URL 或 Image Service URL。

  • 以下 instance_info 字段是可选的。

    • irmc_boot_iso: 启动 ISO 镜像文件名,相对于 remote_image_share_root,Glance UUID,Glance URL 或 Image Service URL。如果未指定,启动 ISO 将从 Glance 中注册的镜像自动创建。

  • 为了使用 iRMC 虚拟介质部署驱动程序,需要 iRMC S4 及更高版本,并具有有效的 iRMC 许可证。如果 iRMC 版本和/或许可证无效,部署者将收到错误消息。

  • 为了通过虚拟介质部署和启动 ISO 镜像,需要 NFS 或 CIFS 服务器。NFS 或 CIFS 服务器必须可以从 iRMC 和 Ironic Conductor 访问。

开发人员影响

实现

负责人

主要负责人

玉田直弘 (naohirot)

其他贡献者

工作项

  • 添加 iRMC 驱动程序 (iscsi_irmc, agent_irmc)

  • 通过重用和重构当前 iLO 部署驱动程序中的部分代码,为 iRMC 驱动程序实现 iRMC 虚拟介质部署模块。

依赖项

测试

  • 单元测试

  • 富士通计划进行第三方 CI 测试

升级和向后兼容性

文档影响

需要在文档中包含所需的 driver_info 字段和 [irmc] 部分参数,以指导操作员如何使用 Ironic 与 iRMC。

参考资料