当前系列发行说明¶
正在开发 - 未发布¶
新特性¶
为检查接口添加了 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 配置部分,同时共享相同的底层实现。
Client和WSGIService类现在接受一个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_DIR和IRONIC_CONFIG_FILE,以提供相同的功能。
Fujitsu
irmc硬件类型已被弃用,将在未来的 Ironic 版本中删除。驱动程序的第三方 CI 大约在 2019 年 7 月 7 日停止响应,并且与供应商联系的尝试没有成功。因此,我们无法声称对驱动程序的修复或更改处于工作状态。irmc硬件类型的用户应开始计划迁移到替代硬件类型。所有 iRMC 特定接口(irmcbios、irmc-virtual-media和irmc-pxe引导、irmc检查、irmc管理、irmc电源和irmcraid 接口)现在被标记为不受支持,并且[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_arch和deploy_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_device 和 set_boot_mode 的调用仅包含最少的参数(例如,BootOverrideTarget 和 BootOverrideMode),这对于某些供应商实现(如 ASRockRack)来说是不够的。
此修复更新了 Redfish 驱动程序以发送完整的有效负载,包括 BootSourceOverrideEnabled、BootSourceOverrideTarget、BootSourceOverrideMode,从而确保在这些平台上的更好合规性和可靠性。
修复了对重定向到另一个 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 启动。