Stein 系列 (12.0.0 - 12.1.x) 发行说明

12.1.6-3

错误修复

  • 引入任务管理器中端口、端口组、卷连接和卷目标的延迟加载,以解决性能问题。对于创建任务管理器对象但不需要上述数据(例如电源同步)的周期性任务,此更改应将数据库交互次数减少约三分之二,从而加快整体执行速度。

12.1.6

错误修复

  • 清理在 conductor 重启时卡在 deleting 状态的节点。

  • 修复了 ironic-conductor 初始化可能在需要锁的请求时返回 NodeNotLocked 错误的 issue。这是因为 conductor 在开始接受新工作后删除了锁。锁的移除已移动到数据库连接建立之后但在 RPC 总线初始化之前。

12.1.5

新特性

  • 添加了一个新的 [ipmi]debug 选项,允许用户显式打开 IPMI 命令调试,而不是依赖于系统调试设置 [DEFAULT]debug。希望继续记录此输出的用户应在 ironic.conf 中将 [ipmi]debug 设置为 True

升级说明

  • 调试日志控制已移动到 [ipmi]debug 配置设置,而不是“conductor” [DEFAULT]debug 设置,因为现有的 ipmitool 输出对于用户来说可能非常具有误导性。希望继续在日志中记录 ipmitool 详细输出的操作员应显式将 [ipmi]debug 命令设置为 True。

错误修复

  • 修复了 agent 客户端代码中的一个 issue,其中对 agent 命令状态的检查没有逻辑来防止间歇性或瞬态连接故障导致整个操作失败。

  • 修复了在使用 Python 3 配置 RAID 时“SpanLength 的参数值无效”的 issue。它将错误的数据类型传递给 iDRAC,例如,它传递了 2.0 而不是 2。请参阅 story 2004265

  • 修复了部署步骤失败时节点 last_error 字段报告模糊的 issue,通过提供失败步骤以及异常错误消息。

  • 修复了一个 bug,在使用 WS-MAN 电源接口时,使用 idrac 硬件类型管理节点重启有时会因 The command failed to set RequestedState 错误而失败。有关详细信息,请参阅 bug 2007487

12.1.4

错误修复

  • 现在在清理 iPXE 启动环境时传递正确的标志,以便在节点拆卸后不会留下任何残留。

  • 添加了查询 agent 命令状态的超时时间。如果没有它,节点可能会长时间锁定,并且 ironic 将不允许对它执行任何操作。

  • 在使用 iscsi 安装整个磁盘镜像时,即使找不到根分区,也要设置引导加载程序。引导加载程序将位于磁盘上。

12.1.3

安全问题

  • 节点密钥(例如 BMC 凭据)不再在使用 JSON RPC 且启用 DEBUG 日志记录时被记录。

错误修复

  • 关于 ansible 部署接口的一个 issue。用于收集 wwn 和 serials 的 discovery playbook 由于 python3 中 dict().keys() 对象不是列表而损坏。

  • 修复了使用序列号作为根设备提示与 ansible 部署接口的 issue。

  • 修复了关于 ansible 部署接口的一个 issue。由于原始请求上下文在获取某些镜像信息时不再可用,因此任何非公共镜像的节点部署都会中断。

  • 修复了 ironic-conductor 服务记录的虚假部署警告,表明在 DEPLOYWAIT 状态下无法处理来自部署 ramdisk 的心跳。

  • 修复了资源列表 API 返回结果仅包含请求字段直到 API MAX_LIMIT。在达到 API MAX_LIMIT 后,API 开始忽略用户请求的字段。此修复将确保分页代码生成的下一个 url 将包含用户请求的字段作为查询参数。

  • 修复了在具有大量安全组的云中部署时,由于列出安全组花费的时间过长而导致的问题。不再列出所有安全组,而是添加了查询过滤器以仅列出要用于网络的安全组。(请参阅 bug 2006256。)

  • 修复了 shellinabox 进程失败时,节点在 [console]subprocess_timeout 秒内锁定的 issue

  • 修复了守护程序启动已经返回成功返回值,但 PID 文件尚未创建时可能发生的 控制台锁定 issue

  • 修复了部署模板中异步带外部署步骤无法执行的 issue。有关详细信息,请参阅 story 2006342

  • 修复了 grub ramdisk 引导模板处理中的一个 bug,使得模板现在正确引用用户提供的 kernal 和 ramdisk。之前部署 ramdisk 和内核被引用在模板中。

  • 修复了使用 redfish BIOS 接口清理后 IPA ramdisk 未引导的问题。有关详细信息,请参阅 story 2006217

  • 修复了使用 update_firmware_sum 清理步骤从 ilo 硬件类型的管理接口更新固件时,由于身份验证失败而无法连接到 iLO 地址的 issue。有关详细信息,请参阅 story 2006223

  • 修复了在 ilo 硬件类型中上电服务器时的问题。如果未找到可引导设备,服务器将无法返回上电操作的成功信息。有关详细信息,请参阅 story 2006288

  • 修复了在 ilo5 RAID 接口创建 RAID 时,第二次创建 RAID 失败的 issue。有关详细信息,请参阅 story 2006321

12.1.2

升级说明

  • iRMC 硬件类型处理了 iPXE 引导接口不兼容问题。要使用 ipxe 引导接口进行 iPXE 引导,(1)ipxe 添加到 ironic.conf 中的 enabled_boot_interfaces(2) 按照 Ironic 关于 iPXE 引导配置的文档 <https://docs.openstack.org/ironic/2025.2/install/configure-pxe.html> 设置 tftp 和 http 服务器,然后 (3) 使用 --boot-interface ipxe 创建/设置裸机节点。

错误修复

  • 修复了在部署过程中遇到的部署 issue,更具体地说是在 configdrive 分区创建步骤中。在某些特定设备(例如 NVMe 驱动器)上,创建的 configdrive 分区无法正确识别(之后需要将数据转储到其中)。https://storyboard.openstack.org/#!/story/2005764

  • 修复了使用 redfish 硬件类型清理节点时,如果其 BMC 不支持 BIOS 设置,则会发生的 traceback。

  • iRMC 硬件类型处理了 iPXE 引导接口不兼容问题。从 Stein 开始,[pxe]ipxe_enabled 选项已被弃用,将在 Train 周期中删除,以支持 ipxe 引导接口。在此期间,iRMC 硬件类型通过 [pxe]ipxe_enabled 选项支持 iPXE 引导。为了应对这种不兼容性,iRMC 硬件类型支持 ipxe 引导接口。

  • 修复了在使用 IPv6 时“ipxe”标签重复的问题,这可能导致 dhcp 服务器向 DHCPv6 客户端返回不正确的响应。

12.1.1

错误修复

  • 修复了关于 ansible deployment interface 清理工作流程的一个 issue。在驱动程序中处理错误并返回空值会导致管理器认为该步骤已完成并进入下一个步骤,而不是中断清理工作流程。

  • 修复了使用 ansible 部署接口时,无法正确将原始镜像流式传输到主机的 issue。

  • 修复了使用 ansible 部署接口和具有 GPT 分区表的实例镜像的部署问题。

  • 修复了在 ipmitool 接口的传感器数据解析方法中,缺乏处理自动包含的 ipmitool 调试信息的能力,当 ironic.conf 文件中将 debug 选项设置为 True 时。因此,底层 ipmitool 命令提供的额外调试信息被忽略。有关更多信息,请参阅 story 2005331

  • 修复了在节点 capabilities 作为字符串传递时,部署失败的 issue。

  • 内部 JSON RPC 服务器现在默认绑定到 ::,使其能够正确地与 IPv6 配合使用。

  • 不再尝试创建具有零生存期的临时 URL,如果 deploy_callback_timeout 选项设置为零。在这种情况下,将使用默认值 1800 秒。使用新的 configdrive_swift_temp_url_duration 选项进行覆盖。

12.1.0

序言

Bare Metal as a Service 团队很高兴地宣布我们的 OpenStack Stein 版本 ironic 12.1.0。虽然在此版本开发过程中没有受到 steins 或扬声器的伤害,但我们可能在得知我们可以将音量调得远远超过十一时听力受损了!

值得注意的项目包括

  • 增加了电源同步的并行性,以提高整体 conductor 效率。

  • API 字段以支持节点 descriptionowner 值。

  • HPE iLO ilo5 和 Huawei ibmc 硬件类型。

  • Allocations API 接口,使操作员能够查找和选择用于部署的裸机节点。

  • JSON-RPC 现在可以用于 ironic-apiironic-conductor 通信,而不是使用 AMQP 消息传递提供程序。

  • 支持可定制的 PXE 模板和简化的部署序列。

  • 初步支持“部署模板”的定义,使操作员能够定义和匹配自定义部署序列。

  • 包含支持 SmartNIC 配置的初步工作,但是所需的 Networking Service 更改预计要到 Train 开发周期中的某个时间才会出现。

  • 以及大量的错误修复,包括 IPv6 和 IPMI 的修复。

此版本包含 ironic 的 12.0.0 版本中的更改,该版本也在 Stein 开发周期中发布,并为 Bare Metal 基础设施操作员提供了一些改进。有关我们之前的 stein 版本的更多信息,请参阅我们的 发行说明

新功能

  • 添加了选项 [ansible]default_python_interpreter 以选择 ansible 在托管机器上使用的 python 解释器。默认情况下,ansible 使用 /usr/bin/python 作为解释器,假设该路径始终存在于远程托管系统上。这可能并非总是如此,例如在自定义构建镜像或 Python 3 本机发行版中。使用此选项,操作员可以设置远程机器上 python 解释器的绝对路径,例如 /usr/bin/python3。相同的解释器将在所有使用 ansible 部署接口的操作中被使用。也可以通过在节点的 driver_info 中传递 ansible_python_interpreter 来覆盖配置中设置的值。

  • 在 redfish 检查接口运行时,将当前使用的启动模式添加到节点 properties/capabilities 中。 此更改的目的是与带内 inspector 行为保持一致。

  • 为节点对象添加一个 description 字段,以便操作员存储与节点相关的任何信息。 该字段最多可容纳 4096 个 UTF-8 字符。

  • 添加了控制实例部署期间启动顺序更改持久性的功能,通过 (i)PXE 在每个节点级别实现。 (i)PXE 驱动程序的节点驱动程序信息中的 ‘force_persistent_boot_device’ 选项已扩展为允许以下值:‘Default’(在部署时使所有更改(最后一个除外)变为非持久性),‘Always’(使所有更改变为持久性)和 ‘Never’(使所有启动顺序更改变为非持久性)。

  • 添加了 API 版本 1.50,允许在节点对象上存储一个 owner 字段。 这用于存储人类可读的信息,或存储租户 UUID,该 UUID 可在 Bare Metal as a Service API 的未来版本中使用。

  • 通过同时运行最多 ironic 配置 [conductor]/sync_power_state_workers 来并行化周期性电源同步调用。 默认情况下,运行最多 8 个 worker。 此更改应使更大规模的设置更频繁地运行电源同步,并使整个电源同步过程更能抵抗缓慢或死掉的 BMC。

  • 在 REST API 版本 1.53 中,为端口对象添加了一个 is_smartnic 字段。

    is_smartnic 字段指示此端口是否为 Smart NIC 端口,默认值为 False。 操作员可以设置此字段,以将带有 Smart NIC 的裸机节点用作 ironic 节点。

    与端口相关的 REST API 端点支持 is_smartnic 字段。 ironic 管理文档 提供了有关如何配置和使用 Smart NIC 端口的信息。

  • 添加了一个新的字段 pxe_template,可以在驱动程序信息级别设置。 这将指定自定义 pxe 启动模板的路径。 如果存在,此模板将被读取,并且优先于每个架构和通用的 pxe 模板。

  • 添加了对启用部署工作流更改的支持,这些更改对于在 ansibledirectiscsiramdisk 部署接口中使用 Smart NIC 所必需的。 预计 Networking 服务的集成功能要到 Networking 服务的 Train 版本才会实现。

  • 引入了分配 API。 此 API 允许按资源类、特性和可选的候选节点列表查找和预留节点。 引入了新的 API 端点

    • GET/POST /v1/allocations

    • GET/DELETE /v1/allocations/<ID name>

    • GET/DELETE /v1/nodes/<ID name>/allocation

  • 添加了对构建 config 驱动程序的支持。 从 API 版本 1.56 开始,/v1/nodes/<node>/states/provisionconfigdrive 参数可以是一个 JSON 对象,其中包含可选的键 meta_data(JSON 对象)、network_data(JSON 对象)和 user_data(JSON 对象、数组或字符串)。 有关更多详细信息,请参阅 story 2005083

  • 允许用户向 ironic 提供 EFI 系统分区镜像,用于构建 UEFI 可引导的 ISO 镜像,采用本地文件或 UUID 或 URI 引用形式。 可以使用新的 [conductor]esp_image 选项来配置 ironic 使用本地文件。

  • 添加了部署模板 API。 部署模板可用于自定义节点部署过程,每个模板指定一个要执行的部署步骤列表,并具有可配置的优先级和参数。

    引入了以下新的 API 端点,从 Bare Metal API 版本 1.55 开始可用

    • GET /v1/deploy_templates

    • GET /v1/deploy_templates/<deploy template 标识符>

    • POST /v1/deploy_templates

    • PATCH /v1/deploy_templates/<deploy template 标识符>

    • DELETE /v1/deploy_templates/<deploy template 标识符>

  • 添加了一个名为 fast-track 的新功能,该功能允许操作员选择性地配置 Bare Metal API 服务和 Bare Metal conductor 服务,以允许查找和心跳检测正在注册和创建的节点。

    这些节点可以保持在线状态,例如来自 discovery 的过程。 如果 ironic-python-agent 在过去 300 秒内与 Bare Metal 服务 API 端点通信,则通常涉及准备在节点上启动 ramdisk 的步骤将被跳过,以及电源操作,以使裸机节点能够通过单个电源循环进行 discovery 到部署。 可以通过 [deploy]fast_track 选项启用快速通道功能。

  • 添加了一种新的硬件类型 ibmc,用于 HUAWEI 2288H V5、CH121 V5 系列服务器。 此硬件类型支持基于 HUAWEI iBMC RESTful API 的 PXE 启动。 支持以下驱动程序接口

    • 管理:ibmc

    • 电源:ibmc

    • 供应商:ibmc

  • 添加了新的硬件类型 ilo5。 除了所有其他硬件接口 ilo 硬件类型支持之外,它还具有一个新的 RAID 接口 ilo5

  • 添加了对基于 iLO5 的 HPE Proliant 服务器执行带外 RAID 操作的功能。

  • 为基于 ipmi 的接口添加了新的属性 ipmi_hex_kg_key。 该属性允许用户以十六进制格式设置 IPMIv2 身份验证的 Kg 密钥。 此值作为 -y 参数提供给 ipmitool

  • 添加了使用 JSON RPC 进行 API 和 conductor 服务之间通信的功能。 要使用它,请将新的 rpc_transport 配置选项设置为 json-rpc,并在 json_rpc 部分中配置凭据和 host_ip。 所有 conductor 的主机名都必须可解析,此实现才能正常工作。

  • 添加了一个 [DEFAULT]/versioned_notifications_topics 配置选项。 这使操作员能够配置用于版本化通知的主题。

  • 用于指标数据的通知事件现在包含一个 node_name 字段,以帮助操作员关联 conductor 服务传输的指标数据。

  • idrac 硬件类型的 OOB Introspection 期间设置节点属性中的 boot_mode。

已知问题

  • 作为良好的安全实践[0],在 Ubuntu Bionic 中,nf_conntrack_helper 已被禁用。 这在使用 PXE 环境的 pxe 启动接口时会导致问题,从而破坏一些 Ironic CI 测试,因为 Ironic 需要 conntrack 用于 TFTP 流量。 仍然可以在 Ubuntu Xenial 上使用 Ironic 和 PXE,也可以使用基于自定义防火墙规则的解决方法在 Ubuntu Bionic 上使用 Ironic 和 PXE,如 [0] 所示。

    [0] https://home.regit.org/netfilter-en/secure-use-of-helpers/

升级说明

  • 在 REST API 版本 1.53 中,为端口对象添加了一个 is_smartnic 字段。

    升级到此版本会将所有端口的 is_smartnic 设置为 False。

  • ironic-status upgrade check 命令添加了一个检查,以检查 ironic 版本的对象版本是否兼容。

  • ‘proliantutils’ 库的 create_raid_configurationdelete_raid_configurationread_raid_configuration 接口已增强,以支持基于 ilo5 硬件类型的带外 RAID 操作。 要利用此功能,需要将 ‘proliantutils’ 库升级到版本 ‘2.7.0’。

  • 删除了为 idrac 硬件类型标记为在 Pike 中删除的已弃用的 driver_info["drac_host"] 属性。 请改用 driver_info["drac_address"]

弃用说明

  • 在 (i)PXE 驱动程序的节点驱动程序信息中的 ‘force_persistent_boot_device’ 选项的值 ‘True’/’False’ 已被弃用,并且对它们的未来支持可能会被删除。 以前的默认值 ‘False’ 已被新值 ‘Default’ 替换,值 ‘True’ 已被 ‘Always’ 替换。

  • 由于缺乏第三方 CI 报告和供应商对驱动程序代码的维护,cisco-ucs-managedcisco-ucs-standalone 驱动程序已被弃用。 在这些驱动程序的当前状态下,它们将作为最终删除对 Python2 支持的一部分而被删除。 预计这些驱动程序将在 Bare Metal 服务的 Train 最终版本之前被删除。 有关更多信息,请参阅 此处

  • “hash_distribution_replicas” 配置选项现已弃用。 如果在配置文件中指定,将记录警告。

错误修复

  • 已修复节点更新代码中的一个错误,该错误可能导致如果其驱动程序不再可用,节点将无法更新。

  • 修复了一个问题,即设置节点的 conductor_group 并非完全区分大小写,即如果 conductor 配置和 API 请求之间的大小写不匹配,则可能会失败。

  • 使 ironic 构建仅 UEFI 可引导的 ISO 镜像(在被要求构建 UEFI 可引导的镜像时),而不是构建混合 BIOS/UEFI 可引导的 ISO 镜像。

  • 修复了一个问题,如果任何节点具有无效的硬件类型,节点列表与 conductor 失败,这可能会发生在某些 conductor 处于离线状态时。

  • 修复了在创建使用 python-dracclient 版本 2.0.0 或更高版本的 RAID 配置时,idrac RAID 接口中出现的问题。

  • 修复了一个问题,无法禁用主 TFTP 镜像缓存。 配置选项 [pxe]/tftp_master_path 现在可以设置为一个空字符串以禁用缓存。 有关更多信息,请参阅 story 2004608

  • 修复了一个问题,xclarity 管理接口无法获取启动顺序。 现在驱动程序正确获取启动设备,并且这已在第三方 CI 中得到验证。 有关详细信息,请参阅 story 2004576

  • 将所需的 python-dracclient 版本提升到 1.5.0 及更高版本。 该版本是修复 idrac 硬件类型的 bug 2004340 所必需的。

  • 使所有 ilo 驱动程序 BIOS 接口清理步骤都为异步。 这对于确保节点上的设置与数据库中存储的设置一致,无论节点清理步骤的状态如何,都是必需的。 有关详细信息,请参阅 bug 2004066

  • 修复了 IPMI 控制台实现,以尊重所有受支持的 IPMI driver_info 和配置选项,特别是 ipmi_port

  • 已更正一个问题,即执行 iPXE 启动的主机将报告一个错误,表明在使用 IPv6 的网络中未找到配置。 这已通过在 Stein 开发周期中对 Networking 服务进行小的修改来解决。 有关更多信息,请参阅 story 2004502

  • 通知事件类型现在包含硬件类型名称字符串,而不是静态字符串“ipmi”。这使得事件处理器和操作员能够理解实际的通知事件数据源,而无需依赖于数据的指纹来做出此类判断。

  • 修复了一个 cinder 块存储服务卷无法附加的问题,该问题期望挂载点是一个有效的字符串。有关更多信息,请参阅 story 2004864

  • 修复了一个 socat 进程在客户端断开连接时退出的问题,这会导致 (a) 在进程表中留下一个僵尸 socat 进程,以及 (b) 禁用任何后续的串口控制台连接。通过更新 ironic 以使用 fork,max-children=1 选项调用 socat,解决了此问题,这使得 socat 能够持久运行并接受多个连接(但一次只有一个)。请参阅 story 2005024 以获取更多信息。

  • 修复了 ipmi 硬件类型的一个问题,即当设置为诸如“False”之类的数值时,node['driver_info']['ipmi_force_boot_device'] 可能会被解释为 True

  • 在提供对 image_source 的无效引用时,返回正确的错误消息。 之前会引发内部错误。

  • 对于完整磁盘镜像,instance_info[root_gb] 属性不再是必需的。 它们一直被忽略,但验证代码仍然期望它们存在。

其他说明

  • Bare Metal 服务现在构建仅 UEFI 可引导的 ISO 镜像(在被要求构建 UEFI 可引导镜像时),而不是构建混合 BIOS/UEFI 可引导的 ISO 镜像。