Cisco UCS PXE 驱动¶
https://blueprints.launchpad.net/ironic/+spec/cisco-ucs-pxe-driver
此蓝图建议添加一个新驱动程序,以支持部署由 Cisco UCS Manager (UCSM) 管理的 B/C/M 系列服务器。
在此蓝图中,服务器和节点可以互换使用,均指 Cisco UCS B/C/M 系列服务器。
问题描述¶
当前的 Ironic 驱动程序要求在所有 Cisco UCS B/C/M 系列服务器上启用 IPMI 协议,才能管理电源操作。出于安全原因,从 UCS Manager 版本 2.2.2 开始,IPMI 协议默认情况下在所有服务器上都已禁用。
为了替代使用 IPMI 协议,此蓝图建议使用新的驱动程序来管理 Cisco UCS B/C/M 系列服务器,该驱动程序使用 Cisco UCS PySDK。
提议的变更¶
作为 pxe_ucs 驱动程序的一部分,将添加新的电源和管理接口。此驱动程序使用 Cisco UCS PySDK 与 UCSM 通信。
- 此驱动程序使用
pxe.PXEDeploy 用于 PXE 部署操作
ucs.power.Power 用于电源操作
ucs.management.UcsManagement 用于管理接口操作
UCS Manager 提供了一个 Python SDK,用户可以使用它执行各种操作,例如控制节点的电源、启用端口、关联服务器等。UCSM 中的物理和逻辑实体表示为 ManagedObject。
电源管理
控制电源类似于修改相应 ManagedObject 的属性。LsPower 是表示服务配置文件的电源的 ManagedObject。作为电源管理的一部分,此提供程序修改 LsPower ManagedObject 的“state”属性。UCSM 会处理剩下的事情。
管理接口
此接口允许用户获取和设置 UCS B/C/M 服务器上的启动顺序。LsbootDef 是表示服务配置文件启动顺序的 ManagedObject。此接口会读取和更新 LsbootDef ManagedObject,以正确地获取和设置启动设备操作。get_sensor_data() 实现不在本规范的范围内。将提交一份单独的规范。
备选方案¶
如果显式启用 IPMI 协议,覆盖 UCS Manager 中的默认设置,则可以使用 IPMI Pxe 驱动程序与 Cisco UCS B/C/M 系列服务器一起使用。
数据模型影响¶
无
RPC API 影响¶
无
状态机影响¶
无
REST API 影响¶
无
客户端 (CLI) 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
安全影响¶
无
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
- 在将节点注册到 ironic 时,需要以下 driver_info 字段
ucs_address: UCS Manager 主机名/IP 地址
ucs_username: 具有 admin/server-profile 访问权限的用户帐户
ucs_password: 用户帐户密码
ucs_service_profile: 此节点正在使用的 service_profile DN (DistinguishedName)。
以下参数添加到位于 /etc/ironic/ironic.conf 的新创建的 [ucs] 部分中(通常位于此处)。
max_retry: 最大重试次数,默认值为 5。
action_timeout: 等待电源操作完成的秒数,默认值为 30 秒,没有明确的最大限制。
开发人员影响¶
无
实现¶
负责人¶
主要负责人:saripurigopi
其他贡献者: vinbs
工作项¶
添加新的 pxe_ucs 驱动程序,扩展电源和管理接口 API。
编写 pxe_ucs 驱动程序的单元测试用例。
编写配置文档。
依赖项¶
此驱动程序要求在 conductor 节点上安装 Cisco UCS Python SDK。
测试¶
将为新的 pxe_ucs 驱动程序实现单元测试。将更新 tempest 测试套件以涵盖 pxe_ucs 驱动程序。将为 Cisco UCS B/C/M 系列服务器添加持续集成 (CI) 支持。
升级和向后兼容性¶
此驱动程序不会破坏 REST API 或 RPC API 的任何兼容性。
文档影响¶
编写配置文档。
更新 Ironic 文档部分 启用驱动程序: https://docs.openstack.org/developer/ironic/deploy/drivers.html,其中包含与 pxe_ucs 驱动程序相关的说明。
参考资料¶
Cisco UCS PySdk:https://github.com/CiscoUcs/UcsPythonSDK