Liberty 系列 (4.0.0 - 4.2.5) 发行说明

4.2.5

安全问题

  • 此版本修复了一个关键的安全漏洞 (CVE-2016-4985)。 之前,如果客户端能够知道(或猜测)属于该节点的网卡的 MAC 地址,则可以通过向 /v1/drivers/$DRIVER_NAME/vendor_passthru 资源发送精心构造的 POST 请求来绕过 Keystone 身份验证并检索注册到 Ironic 的任何节点的所有信息。Ironic 的 policy.json 配置现在在响应此请求时受到尊重,因此,如果其他请求的密码应该被屏蔽,它们也会被屏蔽。

4.2.4

错误修复

4.2.3

升级说明

  • 更新了 iRMC 驱动程序所需的 python-scciclient 版本号至 0.3.0,修复了 bug ‘#1518999’ 和 ‘#1519000’。

错误修复

  • 禁用在自动清理期间默认执行的 clean 步骤 ‘reset_ilo’。在每次调用自动清理时,重置 iLO 并非必需。如果需要,操作员可以启用它。

  • 为 pxe_drac 驱动程序 vendor 接口添加了缺失的 “lookup” 方法,使其能够使用 IPA ramdisk 部署。

  • 修复了 iLO 驱动程序导致自动清理失败的问题。如果 iLO 处于 System POST 状态,则 iLO 驱动程序的自动清理将失败。iLO 在 System POST 状态下不允许设置启动设备。

  • 更新了 iRMC 驱动程序所需的 python-scciclient 版本号至 0.3.0,修复了 bug ‘#1518999’ 和 ‘#1519000’。

4.2.2

序言

修复了一个主要 bug,即 clean 步骤无法运行。

关键问题

  • 此修复解决了 Ironic 跳过所有 clean 步骤的问题,这可能会导致先前租户的数据保留在磁盘上,供新用户使用。

安全问题

  • 此修复解决了 Ironic 跳过所有 clean 步骤的问题,这可能会导致先前租户的数据保留在磁盘上,供新用户使用。

其他说明

  • 开始使用 reno 来管理发布说明。

4.2.1

此版本是基于 4.2.0 的补丁版本,作为稳定的 Liberty 系列的一部分。完整的详细信息可在 Launchpad 上找到:https://launchpad.net/ironic/2025.2/4.2.1

  • 导入日语翻译 - 我们第一次重要的翻译添加!

  • 修复了在日语语言环境的系统上运行时,部署中的一些本地化问题

4.2.0

此版本被提议作为 Ironic 的稳定 Liberty 版本,并带来了一些错误修复和小的功能。完整的发布详细信息可在 Launchpad 上找到:https://launchpad.net/ironic/2025.2/4.2.0

  • 弃用了 bash ramdisk

    由 diskimage-builder 构建的旧 bash ramdisk 现在已被弃用,支持将在 “N” 开发周期开始时移除。用户应迁移到使用 ironic-python-agent 的 ramdisk,后者现在也支持 bash ramdisk 负责的 pxe_* 驱动程序。有关构建 ironic-python-agent ramdisk 的更多信息,请参阅:https://docs.openstack.org/developer/ironic/deploy/install-guide.html#building-or-downloading-a-deploy-ramdisk-image

  • API 版本提升至 1.14

    • 1.12 允许设置节点的 RAID 属性;但是,将此配置放置在节点上的支持尚未实现于 in-tree 驱动程序中;将在未来的版本中添加此支持。

    • 1.13 添加了 provision 状态 API 的新 ‘abort’ 动词。这可用于中止处于 CLEANWAIT 状态的节点的清理。

    • 1.14 使以下端点在 API 中可发现

      • /v1/nodes/<UUID 或逻辑名称>/states

      • /v1/drivers/<驱动程序名称>/properties

  • 为驱动程序实现了一个新的 Boot 接口

    此更改增强了驱动程序接口,供驱动程序作者使用,不应影响 Ironic 的用户,通过将启动服务器的控制权从 DeployInterface 中分离出来。BootInterface 负责在服务器上启动镜像,而 DeployInterface 负责将租户镜像部署到服务器。

    这已在大多数 in-tree 驱动程序中实现,并且是对 out-of-tree 驱动程序的向后兼容更改。以下 in-tree 驱动程序将在即将发布的版本中更新

    • agent_ilo

    • agent_irmc

    • iscsi_ilo

    • iscsi_irmc

  • 为驱动程序实现了一个新的 RAID 接口

    此更改增强了驱动程序接口,供驱动程序作者使用。驱动程序可以开始实现此接口以支持节点的 RAID 配置。目前尚未为任何 in-tree 驱动程序实现此功能。

  • 在与 agent 驱动程序部署之前,现在会检查镜像大小

    agent 必须完全下载租户镜像后才能将其写入磁盘。因此,正在部署的服务器必须有足够的 RAM 来运行 agent 并存储镜像。现在在 Ironic 告诉 agent 部署镜像之前会检查这一点。提供了一个可选的配置 [agent]memory_consumed_by_agent。当 Ironic 执行此检查时,可以设置此配置选项以考虑为运行 agent 保留的 RAM 量。

  • 添加了 Cisco IMC 驱动程序

    此驱动程序支持通过 CIMC API 管理 Cisco UCS C 系列服务器,而不是 IPMI。文档可在以下网址找到:https://docs.openstack.org/developer/ironic/drivers/cimc.html

  • iLO 虚拟媒体驱动程序无需 Swift 即可工作

    iLO 虚拟媒体驱动程序 (iscsi_ilo 和 agent_ilo) 可以独立工作,无需 Swift,只需为托管部署/启动镜像配置 HTTP(S) 服务器。需要在每个 conductor 节点上运行 Web 服务器,并在 ironic.conf 中进行配置。

    iLO 驱动程序文档可在以下网址找到:https://docs.openstack.org/developer/ironic/drivers/ilo.html

已知问题

  • Out of tree 驱动程序可能会因此版本而损坏。AgentDeploy 和 ISCSIDeploy(以前称为 PXEDeploy)类现在依赖于驱动程序使用 BootInterface 的实例。对于存在的 out of tree 驱动程序,如果它们使用这些部署类,则在部署期间会引发错误。有一个简单的解决方法。对于期望这些部署类处理 PXE 启动的驱动程序,可以在驱动程序的 __init__ 方法中添加以下代码

    from ironic.drivers.modules import pxe
    
    class YourDriver(...):
        def __init__(self):
            # ...
            self.boot = pxe.PXEBoot()
    

    一个自行处理启动的驱动程序(例如,实现从虚拟媒体启动的驱动程序)应使用以下方法使对 boot 接口的调用成为无操作

    from ironic.drivers.modules import fake
    
    class YourDriver(...)
        def __init__(self):
            # ...
            self.boot = fake.FakeBoot()
    

    此外,如前所述,ironic.drivers.modules.pxe.PXEDeploy 已移动到 ironic.drivers.modules.iscsi_deploy.ISCSIDeploy,这将破坏使用此类类的驱动程序。

    Ironic 团队对由此造成的不便深表歉意。

4.1.0

这带来了在 Ironic 4.0.0 之上的错误修复和小的功能。主要更改如下,完整的发布详细信息可在 Launchpad 上找到:https://launchpad.net/ironic/2025.2/4.1.0

  • 添加了 CORS 支持

    Ironic API 现在支持 CORS 请求,这些请求可用于基于 Web 浏览器的客户端。这在 ironic.conf 的 [cors] 部分中配置。

  • 删除了已弃用的 ‘admin_api’ 策略规则

  • 弃用了 periodic 任务装饰器中的 ‘parallel’ 选项

4.0.0 第一个 semver 版本

这是 Ironic 的第一个 semver 版本,是在 OpenStack “Liberty” 开发周期期间创建的。它标志着我们的版本模式从基于日期的版本模式到 semver 的转变;之前的发布版本为 2015.1。完整的发布详细信息可在 Launchpad 上找到:https://launchpad.net/ironic/2025.2/4.0.0

  • API 版本提升至 1.11

  • v1.7 在 Node 资源上公开了一个新的 ‘clean_step’ 属性。

  • v1.8 和 v1.9 改进了查询和过滤支持

  • v1.10 修复了 Node 逻辑名称以支持所有 RFC 3986 未保留的字符

  • v1.11 将新创建的 Node 的默认状态从 AVAILABLE 更改为 ENROLL

  • 支持 Node 创建期间新的 ENROLL 工作流

    以前,所有 Node 都在 “available” provision 状态下创建 - 在验证管理凭据、硬件烧入等之前。这可能导致工作负载被安排到尚未准备好使用的 Node 上。

    从 API v1.11 开始,新创建的 Node 从 ENROLL 状态开始,必须在提供之前 “管理” 和 “提供”。API 客户端必须更新以处理新的工作流,当他们开始使用值 >= 1.11 的 X-OpenStack-Ironic-API-Version 标头发送时。

  • 从 Nova “baremetal” 的迁移已被删除

    经过一段时间的弃用,从旧 Nova “baremetal” 驱动程序到新 Nova “ironic” 驱动程序的迁移脚本和支持已从 Ironic 的树中删除。

  • 删除了已弃用的 vendor 驱动程序方法

    在之前的版本中引入了一个新的 @passthru 装饰器到驱动程序 API 中。在此版本中,已删除对 vendor_passthru 和 driver_vendor_passthru 方法的支持。所有 in-tree 驱动程序都已更新。任何未在先前版本中更新到 @passthru 装饰器的 out of tree 驱动程序都需要这样做才能与此版本兼容。

  • 向 Driver API 引入新的 BootInterface

    驱动程序可以选择性地添加一个新的 BootInterface。这只是对驱动程序 API 的重构,以支持未来的改进。

  • 已经添加或增强了几个硬件驱动程序

  • 添加 OCS 驱动程序

  • 添加 UCS 驱动程序

  • 添加 Wake-On-Lan 电源驱动程序

  • ipmitool 驱动程序支持 IPMI v1.5

  • 添加了对 SNMP 驱动程序对 “APC MasterSwitchPlus” 系列 PDU 的支持

  • pxe_ilo 驱动程序现在支持 UEFI 安全启动(iLO 驱动程序的先前版本仅支持 agent_ilo 和 iscsi_ilo 的安全启动)

  • 为 iRMC 驱动程序添加了虚拟媒体支持

  • 为 DRAC 驱动程序添加 BIOS 配置

  • PXE 驱动程序现在支持 GRUB2