定义 idrac 硬件类型对 Redfish 接口的支持¶
https://storyboard.openstack.org/#!/story/2004592
操作者需要能够配置 Ironic 使用 Redfish 来管理 Dell EMC 裸机服务器,并确信它
提供了一种逐步增加 Redfish 使用的方法,随着 Ironic 的支持、标准以及 Dell EMC 服务实现的发展,
提供 Dell EMC 支持的管理协议选择,包括智能平台管理接口 (IPMI)、Redfish 和 Web 服务管理 (WS-Man),
提供所有他们依赖的
idrac硬件类型功能,能够工作并且将继续工作,
得到供应商和社区的支持,并且
能够提供 Dell EMC 增值服务。
本规范建议 idrac 硬件类型提供这一点。
问题描述¶
用例¶
扩展了前言段落描述的内容,可以设想几种用例。虽然本规范支持这些用例,但最终可能只有一部分用例在操作者中具有实际用途。这可能受到许多因素的影响,包括现有与全新部署、操作者对 Redfish 与 WS-Man 的熟悉程度、协议实现成熟度、Redfish 和 WS-Man 中所需功能的可用性、对供应商增值服务的需求、运营计划和时间表等。
以下是这些用例。请注意,除了前两个之外,它们可以组合使用来配置单个 Dell EMC 裸机服务器。
管理员用户拥有一个 Dell EMC 裸机服务器,并且仅使用 WS-Man 来管理它。
管理员用户拥有一个 Dell EMC 裸机服务器,并且仅使用 Redfish 来管理它。
管理员用户拥有一个 Dell EMC 裸机服务器,并且同时使用 Redfish 和 WS-Man 来管理它。当两者都提供所需的功能时,使用其中任何一个。
管理员用户拥有一个 Dell EMC 裸机服务器,并且同时使用 Redfish 和 WS-Man 来管理它。Ironic 管理服务器的能力得到最大化。
管理员用户拥有一个 Dell EMC 裸机服务器,并且同时使用 Redfish 和 WS-Man 来管理它。使用仅从一个或两者处可用的供应商增值服务。
提议的变更¶
背景¶
idrac 硬件类型是 Ironic 驱动程序,旨在与配备集成 Dell 远程访问控制器 (iDRAC) 板载管理控制器的 Dell EMC 裸机服务器一起使用。到目前为止,所有带外 (OOB) 管理协议依赖的接口实现 idrac 都使用 WS-Man 协议与 iDRAC 交互。这些实现 inspect、management、power、raid 和 vendor 硬件接口。与硬件类型一样,它们也被命名为 idrac。它们依赖于 python-dracclient 的 WS-Man 客户端。
操作者还可以选择使用通用的、与供应商无关的 redfish 硬件类型,与具有支持 Redfish 协议的 iDRAC 的 Dell EMC 裸机服务器一起使用。redfish 支持的 OOB 协议依赖的接口实现使用 Redfish 协议与 BMC 交互。这些实现 bios、inspect、management 和 power 硬件接口。同样,与硬件类型一样,它们也被命名为 redfish。它们依赖于 sushy 的 Redfish 客户端。重要的是,虽然其中一些与 iDRAC 配合使用,包括 management 和 power,但并非全部。
redfish 硬件类型支持管理符合 Redfish 协议的服务器。但是,它相对较新,并且该协议标准一直在发展,以及 Dell EMC 等硬件供应商的实现也在发展。与标准一样,合规性和互操作性之间存在差异。例如,Redfish bios 接口实现由于客户端和服务器协议实现不兼容,因此无法与 iDRAC 配合使用。
虽然 idrac 和 redfish 硬件类型支持的接口实现之间存在很多功能重叠,但并不完全相同。只有 idrac 支持 raid 接口实现,只有 redfish 支持 bios。此外,idrac 和 redfish 接口实现中的可选硬件接口功能可能不同。例如,虽然 redfish 实现的 management 硬件接口首先引入了可选的启动模式功能,但 idrac 尚未提供该功能。因此,这两种硬件类型不能完全替代彼此。
Dell EMC 希望能够像通过 WS-Man 一样,为其客户提供 Redfish 标准支持的供应商增值服务。这使操作者能够使用尚未标准化的功能和功能,从而使操作者受益。Dell EMC 可以更快速地响应客户的需求并在市场上实现差异化。
目标¶
通过本规范,我们将实现通过 Dell EMC 裸机服务器推广和加速 Redfish 采用的目标。
非目标¶
以下内容被认为不属于本规范的范围
支持使用 Redfish 和 WS-Man
management和power接口实现混合配置的节点。遗留的idrac实现的management和power硬件接口相互作用以设置启动设备。尚不清楚在混合 Redfish 和 WS-Man 配置中适应这一点是否有必要。可以使用以下 TripleO 命令来注册和配置节点,以便使用 Ironic 进行部署
openstack overcloud node import instackenv.json
请参阅 TripleO 注册节点 文档。它在节点的
driver_info字段中设置属性,这些属性是其驱动程序所必需的。目前,当节点的驱动程序为idrac时,这些属性是 WS-Man 接口实现idrac支持的属性——drac_address、drac_username和drac_password。请参阅 iDRAC 驱动程序 文档。Redfish 接口实现需要在
driver_info字段中具有类似的但不同的属性,包括redfish_address、redfish_system_id、redfish_username和redfish_password。请参阅 Redfish 驱动程序 文档。更改该 TripleO 命令以在节点的
driver_info字段中设置 Redfish 和 WS-Man 属性,当其driver为idrac时,超出本规范的范围。TripleO 项目蓝图将解决这个问题。定义
idrac硬件类型对 IPMI 接口实现的的支持。可以将其作为本规范的后续工作来完成。
解决方案¶
本规范建议通过更改 idrac 硬件类型来解决其描述的问题。由于 Ironic 驱动程序组合改革,我们允许“一个供应商驱动程序,每个节点可配置选项,而不是每个供应商的许多驱动程序”。[1] 该改革的目标包括 [2]
* Make vendors in charge of defining a set of supported interface
implementations in priority order
* Allow vendors to guarantee that unsupported interface implementations will
not be used with hardware types they define. This is done by having a
hardware type list all interfaces it supports.
在 idrac 硬件类型中实现该解决方案有助于使其成为具有 iDRAC 及其 IPMI、Redfish 和 WS-Man 管理协议实现的 Dell EMC 裸机服务器的唯一 Dell EMC 驱动程序。它也符合改革的目标。操作者期望的是这样。
以下是该提案的详细信息。
定义两个新的接口实现组,入口点名称为
idrac-redfish和idrac-wsman。idrac-redfish入口点引用与 iDRAC 兼容的 Redfish 接口实现,目前是management和power硬件接口。idrac-wsman入口点是遗留idrac入口点的新的名称。遗留idrac入口点保持不变。例如ironic.hardware.interfaces.management = ... idrac = ironic.drivers.modules.drac.management:DracManagement idrac-redfish = ironic.drivers.modules.drac.management:DracRedfishManagement idrac-wsman = ironic.drivers.modules.drac.management:DracWSManManagement ... redfish = ironic.drivers.modules.redfish.management:RedfishManagement
声明
idrac硬件类型对idrac、idrac-redfish和idrac-wsman接口实现的的支持。idrac继续具有最高优先级,因为它在其supported_<INTERFACE>_interfaces列表中排在第一位。这里<INTERFACE>是一种硬件接口类型:inspect、management、power等。例如class IDRACHardware(generic.GenericHardware): ... @property def supported_management_interfaces(self): return [management.DracManagement, management.DracWSManManagement, management.DracRedfishManagement] ...
注意
该属性使用类,而不是实例或入口点名称。示例假定已导入所需的模块。
新的
idrac-redfish入口点由新的 Python 类定义,因为使用通用的、与供应商无关的 Redfish 类会使redfish入口点与idrac-redfish同义,并受支持。以后更改入口点 Python 类名称以解决 Dell EMC 特定的不兼容性或引入供应商增值服务,这可能会消除对redfish的支持,这可能是一个破坏性更改。新的 Python 类是从通用的、与供应商无关的 Redfish 类派生的。新的
idrac-wsman入口点由新的 Python 类定义。通过将遗留idrac入口点的类从Drac<INTERFACE>重命名为DracWSMan<INTERFACE>来创建这些类。这里<INTERFACE>指的是一种硬件接口类型:Inspect、Management、Power等。遗留的
Drac<INTERFACE>类通过简单地从新的DracWSMan<INTERFACE>类派生来重新定义。例如class DracManagement(DracWSManManagement): pass
这使得遗留的
Drac<INTERFACE>类成为新的DracWSMan<INTERFACE>类的别名。对 WS-Man 接口实现进行的任何错误修复或功能添加都可从idrac和idrac-wsman入口点获得。拥有两个入口点组的单独类使得随后可以添加实现遗留idrac入口点弃用的逻辑,例如发出日志消息等。
备选方案¶
我们可以更改
python-dracclient的最低层以支持 Redfish,除了 WS-Man 之外。但是,我们预计提供python-dracclientAPI 和工作流程,这些 API 和工作流程抽象了非常不同的 Redfish 和 WS-Man 技术,将具有挑战性。Redfish 的接口是 RESTful 的,而 WS-Man 是一种简单对象访问协议 (SOAP)。API 和工作流程可能需要更改或重新定义。这将需要对现有的idrac接口实现进行大量修改。我们可以保持
idrac硬件类型用于 WS-Man 和redfish硬件类型用于 Redfish 的现状。但是,这不会促进和加速操作者在 Dell EMC 裸机服务器中使用 Redfish,因为redfish并不提供idrac的所有功能。这也不会支持解决与通用的、与供应商无关的redfish硬件类型相关的 Dell EMC 特定不兼容性,或使用 Redfish 引入供应商增值服务。我们可以让
redfish接口实现使用 Redfish OEM 扩展来解决供应商特定的不兼容性并引入供应商增值服务。但是,这似乎与它们应该是通用且与供应商无关的意图不一致。
数据模型影响¶
无
状态机影响¶
无
REST API 影响¶
无
客户端 (CLI) 影响¶
“ironic” CLI¶
无
“openstack baremetal” CLI¶
无
RPC API 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
Ramdisk 影响¶
无
安全影响¶
无
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
部署者可以将
idrac-redfish添加到enabled_management_interfaces和enabled_power_interfaces选项以启用这些新的接口实现。部署者可以将
idrac-wsman添加到enabled_inspect_interfaces、enabled_management_interfaces、enabled_power_interfaces、enabled_raid_interfaces和enabled_vendor_interfaces中,以启用这些新的接口实现。部署者必须在节点的
driver_info字段中指定 Redfish 接口实现所需的属性,包括redfish_address、redfish_system_id、redfish_username和redfish_password,以使用idrac-redfish接口实现。这除了idrac硬件类型在driver_info中需要的传统属性之外 –drac_address、drac_username和drac_password。openstack baremetal node create --driver idrac --driver-info \ drac_address=1.2.3.4 --driver-info drac_username=admin --driver-info \ drac_password=password --driver_info redfish_address=https://1.2.3.4 \ --driver-info redfish_system_id=/redfish/v1/Systems/System.Embedded.1 \ --driver-info redfish_username=admin --driver-info \ redfish_password=password
请参阅 Redfish 驱动程序 文档、iDRAC 驱动程序 文档和 非目标。
部署者可以在节点注册时指定新的
idrac-redfish和idrac-wsman接口实现openstack baremetal node create --driver idrac ... --management-interface \ idrac-wsman --power-interface idrac-wsman ...
它们也可以通过以下命令设置
openstack baremetal node set <NODE> --management-interface idrac-redfish \ --power-interface idrac-redfish
它们必须如上所述启用。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
rpioso
- 其他贡献者
无
工作项¶
定义两个具有入口点名称为
idrac-redfish和idrac-wsman的接口实现组。声明
idrac硬件类型对idrac、idrac-redfish和idrac-wsman接口实现的支持。针对配备 iDRAC 并由
idrac硬件类型管理的 Dell EMC 裸机服务器集成测试这些更改。修改 Dell EMC Ironic 第三方持续集成 (CI) 以涵盖此规范添加的支持配置。
更新 iDRAC 驱动程序 文档。
依赖项¶
此规范与 驱动程序组合改革 相关。
它专门针对配备 iDRAC 并由 idrac 硬件类型管理的 Dell EMC 裸机服务器。
测试¶
由于当前硬件可用性的限制,无法在 gate 中进行测试。
缓解计划是为通过此规范添加的支持配置添加到 Dell EMC Ironic 第三方 CI 中,我们预计这些配置将很常见。
升级和向后兼容性¶
此更改设计为向后兼容。传统的 idrac 接口实现入口点将在一段时间内得到支持。将涵盖其弃用的单独故事。
一旦可行,我们将建议切换到合适的新的 idrac-redfish 和 idrac-wsman 接口实现入口点。
文档影响¶
更新了 iDRAC 驱动程序 文档,以
描述从传统的
idrac接口实现入口点切换到新的idrac-redfish和idrac-wsman入口点,反映对支持的接口实现的更改,并
告知具有 Redfish 和 WS-Man
管理和电源接口实现混合的节点配置不受支持。
参考资料¶
- OpenStack 软件项目
- 相关的 Ironic 规范
- 文档
- 标准
脚注