Ironic 的 OneView 新驱动程序¶
https://bugs.launchpad.net/ironic/+bug/1526406
本规范建议添加一个新驱动程序,以支持由 OneView 管理的服务器部署。OneView 是惠普开发的集成基础设施系统管理软件。
在本规范中,服务器硬件是 OneView 中用于表示物理服务器的标签。
问题描述¶
目前 Ironic 尚未与任何基础设施管理系统集成。如今,能够使用这些系统库存中的硬件来配置裸机实例是一项手动/耗时的任务,需要对每台服务器进行预配置。OneView 可以简化此配置工作量。
本规范建议一个新的 Ironic OneView 驱动程序,它将促进与 HP OneView 管理系统的集成。 建议的驱动程序将提供与 OneView 的自动库存管理,允许 Ironic 从 OneView 的库存中借用非专用服务器,以通过 OneView 的服务器配置文件模板 (SPT) 进行最少通用的预配置来配置裸机实例。
为了使用由 OneView 管理的服务器硬件,需要在节点注册之前为其分配一个服务器配置文件,以便配置硬件以供使用(选择/更新固件,启用网卡,设置其上的网络连接,BIOS/UEFI 设置,初始化存储等)。 云管理员可以利用这种资源来配置服务器的网卡,以便根据需要使用 Ironic 置备网络,以及其他可以实现最佳性能的选项。
提议的变更¶
本规范建议 pxe_oneview 和 agent_oneview 驱动程序,实现电源、管理和(对于 Agent 驱动程序)供应商接口。
该驱动程序使用 python-oneviewclient 来处理驱动程序和 OneView 之间的通信,例如获取有关资源的的信息、打开和关闭服务器硬件以及处理服务器配置文件的配置。
服务器配置文件基于 SPT,其中包含配置硬件网卡以加入扁平网络、初始化服务器存储以及 Ironic 使用的其他配置选项(例如 boot_type 和 boot_order)的信息。 SPT 还可以包含特定的配置选项,以提高硬件的性能,例如高级内存保护、USB 启动、启用虚拟化技术和超线程、更改热配置等。 基于这些前提,要注册,节点必须具有以下参数
- driver_info
server_hardware_uri:OneView 上服务器硬件的 URI
server_profile_template_uri:用于创建节点服务器配置文件的服务器配置文件模板的 URI。 这将在未来的 zapping 任务中用于更改节点的服务器配置文件。
- properties/capabilities
server_hardware_type_uri:OneView 上服务器硬件类型的 URI,用于调度目的,如果希望在风味中确定的硬件上部署。
enclosure_group_uri:OneView 上机箱组的 URI,用于调度目的,如果希望在风味中确定的机箱上部署。
该驱动程序实现
oneview.power.OneViewPower
oneview.management.OneViewManagement
oneview.vendor.AgentVendorInterface
- 电源接口
*_oneview驱动程序的电源接口使用 OneView 的 REST API 控制和同步节点的电源状态。 此接口上的 validate() 方法将检查所需的参数以及节点是否已关联服务器配置文件。- 管理接口
*_oneview驱动程序的管理接口允许用户通过修改分配给服务器硬件的服务器配置文件来获取和设置服务器硬件的启动顺序。 如果尚未为实例分配服务器配置文件,将抛出异常,因为仅能通过服务器配置文件修改由 OneView 管理的服务器的启动顺序。 此接口上的 validate() 方法还将检查所需的参数以及节点是否已关联服务器配置文件。- Agent 供应商接口
agent_oneview接口修改了reboot_to_instance方法设置启动设备的方式,因为 OneView 不允许在机器上电的情况下进行此类更改。
此驱动程序重用 PXEBoot 进行启动,并重用 ISCSIDeploy/AgentDeploy 进行部署。
要使用 *_oneview 驱动程序进行部署,节点的服务器配置文件必须应用于节点所代表的服务器硬件。 该服务器配置文件必须将节点的第一个网卡连接到 Ironic 的置备网络。
备选方案¶
我们可以使用现有的驱动程序(例如 pxe_ipmitool、pxe_ilo、iscsi_ilo 甚至 agent_ilo)来启动由 OneView 管理的实例。 但那样的话:- 我们将失去通过 OneView 管理这些实例的能力;- 如果节点由 OneView 管理,并且没有服务器配置文件,并且使用其他驱动程序部署,则另一个用户可以通过应用服务器配置文件来声明它,从而 Ironic 将失去对服务器的控制;- 不使用 OneView,在服务器硬件项目之间保持配置一致性是一项手动、乏味且耗时的任务。
数据模型影响¶
无
状态机影响¶
无
REST API 影响¶
无
客户端 (CLI) 影响¶
无
RPC API 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
Ramdisk 影响¶
N/A
安全影响¶
与 OneView 的连接默认情况下是安全的,使用 TLS 和证书身份验证,但用户可以通过将配置文件中的 allow_insecure_connections 字段设置为 True 来允许不安全的连接。
其他最终用户影响¶
无
可扩展性影响¶
该驱动程序使用 python-oneviewclient 通过 OneView 的 REST API 获取一些数据,这是一个外部服务。 调用很简单,但考虑到大量的服务器硬件项目,可能会发生轻微的网络流量增加。
性能影响¶
无
其他部署者影响¶
在 ironic.conf 的新创建的 [oneview] 部分中需要以下参数
manager_url:OneView 管理器 url
username:具有 OneView 中 admin/server-profile 访问权限的用户帐户
password:OneView 中用户帐户的密码
allow_insecure_connections:允许连接到没有受信任 CA 签名的证书的 OneView。 默认值为 False。
tls_cacert_file:用于验证 OneView 证书时要使用的受信任 CA 的证书的路径,前提是不允许不安全的连接
max_polling_attempts:检查 OneView 上的更改的最大连接尝试次数
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
thiagop
- 其他贡献者
albertoffb caiobo diegolp liliars sinval afaranha
工作项¶
实现新的
iscsi_pxe_oneview和agent_pxe_oneview驱动程序。为
*_oneview驱动程序实现单元测试用例。编写配置文档。
依赖项¶
该驱动程序需要 python-oneviewclient 包。
测试¶
将为新驱动程序实现单元测试。 将来将使用第三方 CI 来提供适合涉及 OneView 设备的测试环境。
升级和向后兼容性¶
无
文档影响¶
节点和 [oneview] 部分的必需参数 ironic.conf 将包含在文档中,以指导操作员如何使用 Ironic 与 OneView。