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])
https://wiki.samba.org/index.php/Samba_CTDB_GPFS_Cluster_HowTo
性能影响¶
无
其他部署者影响¶
除了 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 虚拟介质部署模块。
依赖项¶
此功能需要 iRMC S4 及更高版本,即至少为 FUJITSU PRIMERGY 服务器的 BX S4 或 RX S8 代。
此功能使用 python-scciclient 包。
此功能依赖于 iRMC Power Driver for Ironic 和 iRMC Management Driver for Ironic。
测试¶
单元测试
富士通计划进行第三方 CI 测试
升级和向后兼容性¶
无
文档影响¶
需要在文档中包含所需的 driver_info 字段和 [irmc] 部分参数,以指导操作员如何使用 Ironic 与 iRMC。