当前系列发行说明

正在开发 - 未发布

新特性

  • 为检查接口添加了 Redfish LLDP 数据收集支持。这使得在检查过程中能够从符合 Redfish 标准的硬件收集链路层发现协议 (LLDP) 数据。收集的数据包括机箱 ID、端口 ID、系统名称、系统描述、系统功能和管理地址,格式为与 Ironic Python Agent 检查钩子和规则兼容的 TLV。

  • 添加了一个名为 kubernetes 的新的 ironic.console.container 提供程序,它允许 Ironic conductor 将控制台容器作为 Kubernetes pod 进行管理。Kubernetes 资源在由 [vnc]kubernetes_container_template 配置的模板文件中定义,默认模板创建一个 secret 来存储应用程序信息,并创建一个 pod 来运行控制台容器。

    预计 Ironic conductor 将部署在 Kubernetes 集群内部。关联的服务帐户需要角色和绑定,允许其管理所需的资源(使用默认模板,这将是 secrets 和 pods)。

    该提供程序假定 ironic-novnc 将部署在同一个 Kubernetes 集群中,因此可以通过 pod 的 status.hostIP 连接到 VNC 服务器。

  • 添加了一个基于 Ubuntu 的容器文件,用于 VNC 图形客户端操作容器,这超越了标准的基于 Centos 的 VNC。

弃用说明

  • 以下选项现在正式弃用。这些自 26.0.0 版本中删除 idrac wsman 驱动程序接口以来一直未被使用。

    • [drac] config_job_max_retries

    • [drac] bios_factory_reset_timeout

错误修复

  • [Bug 2135265] 修复了一个在使用 agent inspector 接口时,检查钩子中的异常会导致节点无法清理的问题。

  • [pxe]loader_file_paths 允许嵌套路径,但这不是代码的预期功能。Ironic 的其他地方期望文件只是一个基本路径,没有目录。删除提供嵌套路径的能力,以避免将来用户的问题。

  • 确保在尝试复制引导加载程序之前,复制引导加载程序的目标路径存在。

  • 修复了 is-empty 检查规则,以正确处理库存中缺失的字段。 以前,当使用库存中不存在的字段检查空值时,该规则会在变量插值期间因 KeyError 而失败。现在,缺失的字段被视为 is-empty 操作为空,允许规则在检查不存在的库存字段时通过。

  • check_image_size 移动到 deploy_utils,以便它在部署流程的早期运行,并且仅在需要时运行,重用已经获取的镜像信息。

  • 修复了配置驱动 ISO 存储 URL 的处理方式,以尊重节点 driver_info\external_http_url 覆盖值(如果已设置)。

其他说明

  • 删除了对 sushy-oem-idrac 的回退加载,因为 Ironic 现在至少需要一个集成了 sushy-oem-idrac 的 sushy 版本,并且将始终首先加载它。

33.0.0

新特性

  • 添加了一个 noop 部署接口,该接口不执行任何实际的部署操作。这允许操作员分配节点并将它们标记为 Ironic 中的 active,而无需部署操作系统。这为 Nova 部署中的节点采用提供了一种替代方法,可以使用正常的部署动词代替采用动词。当节点由外部系统管理但在 Ironic 的库存中跟踪时,它也很有用。

  • 图形控制台容器镜像的容器构建配方已将 Chrome/Selenium 方法替换为 Firefox 扩展。

    以前的容器化图形控制台方法使用 Selenium 脚本管理 Chrome 浏览器会话。此更改将其替换为 firefox 和自定义扩展,以执行登录和加载 BMC 控制台所需的动作。这支持与以前方法相同的供应商(iDRAC、iLO、Supermicro)。

    与 chrome/selenium 版本的区别

    • Firefox 平铺模式具有更锁定的环境,包括禁用上下文菜单。这意味着不再需要脆弱的解决方法来禁用它们。

    • Firefox 全局策略允许进一步锁定环境,包括限制访问除 BMC 之外的所有 URL。

    • 现在有一个专门的加载页面,可以显示状态更新,直到第一个 BMC 页面加载。如果任何早期的 redfish 调用失败,此页面将显示错误消息。

    • VNC 客户端会话现在与多个客户端共享,并且 firefox 将在第一个连接时启动,并在最后一个连接结束时停止。

    • 启动 Xvfb 现在延迟到第一个 VNC 客户端连接。这导致未连接的容器使用 5MB 与启动 Xvfb 后使用的 30MB。启动 Xvfb 具有 ~1 秒的时间延迟。

    • 浏览器现在在专用的非 root 用户下运行

    • 所有 redfish 控制台现在都使用 CSS 覆盖隐藏工具栏元素,而不是模拟其他方法,例如单击“全屏”按钮。

    • ilo6/ilo5 检测现在通过 redfish 调用完成,并且 ilo5 路径的活动部件更少。

  • 添加了对多个 JSON-RPC 配置组的支持。JSON-RPC 客户端和服务器实现现在可以使用同一配置文件中的不同配置部分。这将使未来的 Ironic 服务能够使用自己的 JSON-RPC 配置部分,同时共享相同的底层实现。 ClientWSGIService 类现在接受一个 conf_group 参数来指定要使用的配置组。

  • 在使用“neutron”接口插入裸机端口时,将裸机端口的“physical_network”值作为绑定配置文件的的一部分发送到 Neutron。

  • 在 Ironic 节点中添加了一个新的 instance_name 字段。该字段可用于存储与该节点关联的 Nova 实例的显示名称,符合 Nova 的 display_name 字段的约束和格式。该字段支持最多 255 个字符的字符串,当不为空时,最小长度为 1 个字符。

    在节点拆卸操作期间清除实例数据时,instance_name 字段会自动清除。为了向前兼容,当 Nova 或其他 API 客户端使用 display_name 值更新 instance_info 时,如果未显式设置 instance_name,则该值会自动复制到 instance_name 字段。

  • 已向 Portgroup 对象添加了一个新的“category”字段。该字段旨在帮助区分不同的 Portgroup。与基于 trait 的端口调度功能相关。

  • 已向 Portgroup 对象添加了一个新的“physical_network”字段。该字段在语义上与 Port 字段的“physical_network”相同。这将允许 portgroup 按物理网络进行调度,类似于端口,在未来的更改中。

  • [console]port_range 配置选项现在支持分段端口范围,允许指定多个不连续的端口范围作为逗号分隔的值。例如,可以使用 1000:1100,2000:2500,而不是需要单个连续范围。

  • 查找 API 现在包含一个 agent_skip_bmc_detect 配置标志,该标志在节点使用带外管理接口(Redfish、iDRAC Redfish、iLO、iRMC)时自动设置为 True。这告诉 agent 跳过通过 ipmitool 进行的 BMC 检测,从而减少部署时间并避免在 BMC 地址已在 Ironic 中配置时进行不必要的 ipmitool 调用。

  • 将制造商、型号和系统 UUID 信息添加到 redfish 传感器数据收集器。

升级说明

  • 已删除弃用的 inspector 检查接口。请使用 agent 接口。

    请参阅 迁移指南,了解如何将使用 ironic-inspector 的现有部署迁移到具有内置检查功能的全新架构。

  • sushy-oem-idrac 扩展不再使用,并且已从要求中删除。

弃用说明

  • 现在弃用了使用 ironic.api.wsgi:initialize_wsgi_app 向 ironic 提供自定义配置文件。

    相反,引入了两个新的环境变量 IRONIC_CONFIG_DIRIRONIC_CONFIG_FILE,以提供相同的功能。

  • Fujitsu irmc 硬件类型已被弃用,将在未来的 Ironic 版本中删除。驱动程序的第三方 CI 大约在 2019 年 7 月 7 日停止响应,并且与供应商联系的尝试没有成功。因此,我们无法声称对驱动程序的修复或更改处于工作状态。

    irmc 硬件类型的用户应开始计划迁移到替代硬件类型。所有 iRMC 特定接口(irmc bios、irmc-virtual-mediairmc-pxe 引导、irmc 检查、irmc 管理、irmc 电源和 irmc raid 接口)现在被标记为不受支持,并且 [irmc] 部分中的所有配置选项已被弃用以供删除。

    irmc 硬件类型和所有关联的接口和配置选项将在未来的版本中删除。

错误修复

  • 通过使用扩展超时(默认 300 秒)进行 BMC 固件更新来修复 BMC 固件更新超时问题,以处理 BMC 在固件更新过程中的过渡状态,除非操作员指定了不同的超时时间。

  • 通过在 Redfish 驱动程序中固件升级后添加全面的 BMC 状态验证来减少间歇性固件升级失败的可能性。固件更新任务成功完成后,Ironic 现在会验证 BMC 资源(System、Manager 和 NetworkAdapters)是否一致可用,然后再继续后续操作。

    此更改通过要求 BMC 资源连续成功响应的可配置次数来提高固件更新的可靠性(默认值为 3),0 禁用验证。

    [redfish] 部分中的新配置选项

    • firmware_update_required_successes - 认为 BMC 验证成功所需的连续成功响应次数(默认值:3),0 禁用验证

    • firmware_update_validation_interval - 验证尝试之间等待的秒数(默认值:30)

    • firmware_update_resource_validation_timeout - 等待 BMC 资源稳定化的最大秒数(默认值:300),设置为 0 禁用验证。

  • 当 disable_deep_image_inspection = true 时,代码路径使用目标文件名作为源文件名,导致失败。由于代码尝试清理的方式,此错误被吞噬,并且仅在稍后使用该文件时才被捕获。

  • 修复了一个竞态条件,该竞态条件可能导致 Redfish 电源接口在电源操作期间出现 HTTP 400(BadRequest)或 HTTP 409(Conflict)错误。现在,如果节点已处于目标电源状态(打开或关闭),则这些错误被视为成功,从而防止在电源状态更改完成后 Ironic 的状态验证超时时发生部署失败。 此外,刷新系统状态以从 BMC 获取当前电源状态,而不是使用可能过时的缓存数据。

  • 具有空或空固件包版本的 NIC 固件组件现在在缓存期间被过滤掉,以避免违反 NOT NULL 数据库约束。

  • 在不同文件系统之间缓存镜像时,硬链接操作将失败。通过回退到复制操作来修复此问题。

  • 修复了一个关于处理内省数据的问题,该问题导致无法更新 InfiniBand client-id 值。发现后,InfiniBand 端口应记录其 client-id 值,从而实现使用 InfiniBand 的正确网络引导处理。

  • 修复了一个关于处理 portgroup 更新的问题,其中关联的节点 ID 已更改。虽然这是一种罕见的操作,但它存在作为一种功能,并且在删除 eventlet 期间发生了一个错误。

  • 修复了 ironic 的 pxe 过滤器逻辑,一些操作员可能会利用它来限制与硬件发现用例相关的资源访问。启动器在删除 eventlet 期间被意外破坏。

  • 修复了一个问题,即 redfish-virtual-media 接口使用 Dell iDRAC BMC 的版本范围来报告兼容性。Dell 已经更改了 iDRAC10s 的版本结构,这触发了错误。也就是说,iDRAC10s 似乎也不兼容。错误消息现在清楚地指示了哪些版本已知与库存 redfish 虚拟媒体支持一起工作。用户应改为使用 idrac 变体引导接口。

  • 修复 Swift 中库存和插件数据的存储。 之前,数据并未以 JSON 格式存储。 这意味着数据以一种奇怪的格式存储,并且缺少部分字段。

  • 修复了一个问题,即虚拟媒体 ISO 创建(Redfish 和 iLO 驱动程序使用)没有尊重特定于架构的内核和 ramdisk 配置参数。 当配置了 deploy_kernel_by_archdeploy_ramdisk_by_arch(或它们的救援等效项)时,ISO 生成仍然会使用通用参数,而不是根据节点的 CPU 架构选择正确的内核和 ramdisk。 这尤其影响需要与 x86_64 节点不同的代理镜像的 ARM64 节点。 有关更多信息,请参阅 bug 2126991

  • flat 网络驱动程序现在在 rebind 操作无法绑定任何 VIF 时会引发 NetworkError,而不是默默地继续。 这可以防止在所有端口绑定失败时节点 rebind 期间出现意外行为。

  • 在 2025.2 版本中添加了一项功能,允许 Ironic conductor 访问与其项目共享的镜像,以及它自己的镜像,但检查没有正确使用 Glance API,导致无法正常工作。 此修复解决了这个问题,并公开了一个类型检查的方法。Bug #2099276。

  • 修复了 HttpImageService.validate_href() ImageRefValidationFailed 异常,如果协议是 HTTP/HTTPS 并且 HTTP 标头响应是除了 301 (MOVED_PERMANENTLY) 之外的其他重定向。 HTTP/HTTPS 协议通常用于独立的 Ironic 配置中以识别镜像源(例如 –instance-info image_source=<URI>)。 HTTP 服务器可以使用重定向来进行负载均衡或地理分布请求,或者只是指向正确的 URL。 重定向可能从 301 (MOVED_PERMANENTLY) 到 302 (FOUND),或 307 (TEMPORARY_REDIRECT) 和 308 (PERMANENT_REDIRECT) 不等。

  • 修复了一个问题,即某些 iDRAC10 机器需要特定的虚拟媒体插槽。 Ironic 将尝试自动识别版本,并确保使用正确的插槽来插入 iso。 有关详细信息,请参阅 bug 2125571

  • 添加了 ilo 驱动程序弃用升级检查警告。

  • 避免在 local_link_connection 检查钩子中出现未处理的异常,该异常会导致检查失败,而不是像最初预期的那样跳过缺失的端口。

  • 我们之前 [conductor]/sync_power_state_interval 的默认值对于许多硬件设备来说过于激进。 我们现在默认每隔一分钟检查一次电源状态,而不是每分钟检查一次。 这将显著减轻节点 BMC 和 Ironic conductor 的整体负载。

  • 修复了 HP iLO Generation 11 机器上固件升级失败的问题,当 NetworkAdapters 端点在固件组件缓存过程中返回 HTTP 400 (Bad Request) 响应时。 异常处理允许代码继续执行,绕过该问题。

  • 修复了将通过 ORAS 上传到 Quay.io(以及可能其他注册表)的 OCI 工件作为单个清单部署的问题。

  • 修复了与 oslo.service 版本 4.4.0 及更高版本的兼容性。 组合的 Ironic 服务 (ironic 命令) 将 no_fork 参数传递给 ServiceLauncher,这在 oslo.service <= 4.3.0 中有效,因为 ServiceLauncher 被映射到 ProcessLauncher(支持 no_fork)。 在 oslo.service 4.4.0 中,此映射已更改,并且 ServiceLauncher 成为一个不接受 no_fork 的独立类,从而在启动服务时导致 TypeError。 该代码现在直接使用 ProcessLauncher 通过 process_launcher(),这可以正确支持 no_fork 并确保 VNC 信号处理在 [vnc]enabled=True 时正常工作。

  • 通过更新应用启动模式和启动设备设置的方式,改进了与 ASRock Rack 服务器的 Redfish 兼容性。

    之前,对 set_boot_deviceset_boot_mode 的调用仅包含最少的参数(例如,BootOverrideTargetBootOverrideMode),这对于某些供应商实现(如 ASRockRack)来说是不够的。

    此修复更新了 Redfish 驱动程序以发送完整的有效负载,包括 BootSourceOverrideEnabledBootSourceOverrideTargetBootSourceOverrideMode,从而确保在这些平台上的更好合规性和可靠性。

  • 修复了对重定向到另一个 URL 的镜像源 URL 的验证。 之前,它会引发 UnboundLocalError。

  • 通过将这些事务的日志记录减少到最需要的,即请求 ID 值,来修复 JSON-RPC 事务的过度日志记录。 这种行为可以被禁用,并且可以通过将 [json_rpc]debug_log_request_id_only 设置为 False 来启用以前的详细日志记录模式。

  • 当设置时,ipa-inspection-callback-url 内核参数现在使用 external_callback_url 配置。 之前,即使配置了 external_callback_url,此 URL 也使用内部地址,这与正确使用外部地址的 ipa-api-url 造成了不一致。

  • 在节点验证期间,为 ipmi_address 字段添加了验证,以确保它包含有效的 IP 地址或主机名。

  • 修复了 OpenStack Nova 集成安装中的一个问题,即在 baremetal 实例重新调度期间,MAC 地址可能在 Neutron 服务中冲突,方法是允许在节点处于 AVAILABLE 状态时断开 VIF 的连接。 有关更多详细信息,请参阅 bug bug 2109300

其他说明

  • VENDORS_REQUIRING_FULL_BOOT_REQUEST 添加了一个额外的供应商变量。 这是因为有一些公认的供应商,例如 Lenovo,它们在其硬件中使用各种 BMC,其中一些需要完整的启动请求;在这种情况下,vendor 现在可以更改为 redfish_compatible

  • 为了与其他 OpenStack 项目保持一致,Ironic API 的 wsgi 服务器现在可以通过 ironic.wsgi.api:application 以及 ironic.wsgi:application 启动。