Dell EMC 硬件固件更新¶
https://storyboard.openstack.org/#!/story/2003494
操作员和部署者(例如 tripleo)需要在配置裸机服务器之前,能够将 Dell EMC 硬件的固件刷新到特定版本。
问题描述¶
用例¶
操作员将服务器上某些硬件组件的固件升级到较新版本,以利用固件中的新功能或错误修复。这可以在配置之前或之后进行。
操作员将服务器上某些硬件组件的固件回滚到先前版本,以避免较新固件引入的回归。这可以在配置之前或之后进行。
部署者(例如 tripleo)在启动 overcloud 部署之前,将某些硬件组件的固件固定到指定的版本。
以下用例不在此规范的范围内
操作员或软件组件将固件镜像上传到固件镜像仓库。
操作员或软件组件从固件镜像仓库中删除固件镜像。
Dell EMC WSMAN 固件管理¶
WSMAN 固件管理由 iDRAC 提供。支持的操作包括:
列出服务器上的固件:枚举 DCIM_SoftwareIdentity
更新固件:调用 DCIM_SoftwareInstallationService.InstallFromSoftwareIdentity
Dell EMC Redfish 固件管理¶
Redfish 固件管理由 iDRAC 提供。支持的操作包括:
对 redfish 硬件类型中固件管理的支持¶
sushy 中固件更新的补丁已合并:https://review.opendev.org/#/c/613828/ 目前 redfish 硬件类型尚不支持固件更新。
提议的变更¶
由于 Dell EMC 的 ‘’redfish’’ 固件更新实现完全符合 DMTF 规范,因此决定采用 redfish 实现。
将在 RedfishManagement 类中添加一个手动清理步骤来启动固件更新。清理步骤将接受一个字典列表。每个字典将代表一个单独的固件更新,并将包含指向固件镜像的 URI。
例如
"clean_steps": [{
"interface": "management",
"step": "update_firmware",
"args": {
"firmware_images":[
{
"url": "file:///firmware_images/idrac/9/iDRAC-with-Lifecycle-Controller_Firmware_VRYKT_WN64_3.32.32.32_A00.EXE",
"checksum": "<sha1-checksum-of-this-file>"
},
{
"url": "swift://firmware_container/BIOS_W8Y0W_WN64_2.1.7.EXE",
"checksum": "<sha1-checksum-of-this-file>"
}
]
}
}]
该实现将按照给定的顺序应用固件更新。
该实现将不知道所提供固件的依赖关系,或者固件是否适用于正在安装它的硬件。该实现将依赖于固件更新在这些情况下优雅地失败。
更新器将快速失败,以便如果一个更新失败,它将中止并且不会应用剩余的更新。如果在应用更新的过程中发生故障,则在失败的更新之前的成功更新将不会回滚。
清理步骤将是带外进行的。固件更新清理步骤将使用 Redfish 执行更新。目标是尽可能使用 sushy 库,如果不能,则根据需要提供供应商扩展。
虽然 iDRAC 支持回滚到上一个已知的良好固件,但此规范中不会实现此功能。相反,如果用户希望回滚到早期版本的固件,他们将只需更新到较旧版本。
虽然此功能的初始实现将使用 Redfish 协议,但它将以一种不会阻止以后添加对 WSMAN 协议支持的方式来实现。
备选方案¶
另一种选择是使用 iDRAC 的 Ironic Python Agent 硬件管理器通过带内方式实现固件更新。因为 WSMAN 最终将被 Redfish 取代,所以最好避免这种选择。
另一种选择是通过 Ironic Python Agent 硬件管理器为 iDRAC 通过带内方式进行固件更新。
数据模型影响¶
无
状态机影响¶
无
REST API 影响¶
无
客户端 (CLI) 影响¶
“ironic” CLI¶
用户将能够启动一个清理步骤来更新 Dell EMC 服务器上的固件。
“openstack baremetal” CLI¶
用户将能够启动一个清理步骤来更新 Dell EMC 服务器上的固件。
RPC API 影响¶
无
驱动程序 API 影响¶
将添加一个清理步骤来更新由 redfish 硬件类型管理的 Dell EMC 硬件上的固件。
Nova 驱动程序影响¶
无
Ramdisk 影响¶
无
安全影响¶
无
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
要使用固件更新,用户需要配置所选硬件类型以使用 redfish 管理接口,并在节点的 driver_info 中设置 redfish 凭据。
配置选项¶
将在 ironic 配置文件中定义一个新的 [firmware_update] 组。以下选项将从 iLO 部分移动到该组。
- use_web_server_for_images
指示是否应将镜像上传到 conductor Web 服务器。
- swift_container
固件镜像的 swift 容器。
- swift_object_expiry_timeout
给定 swift URL 应该失效的秒数超时时间。
开发人员影响¶
无
实现¶
负责人¶
cdearborn
工作项¶
Ironic RedfishManagement 更改以添加清理步骤
python-dracclient 更改以实现固件更新
Ironic iDRAC 硬件类型更改以添加对 Redfish 管理接口的支持
依赖项¶
无
测试¶
添加单元测试以测试固件更新清理步骤。
升级和向后兼容性¶
如果在不支持 Redfish UpdateService.SimpleUpdate 固件升级命令的 Dell EMC 服务器上尝试固件更新,则将中止清理并记录适当的错误消息。
文档影响¶
将更新文档以涵盖此新功能。文档将更新,以包括官方支持的 Dell EMC 硬件代数。