Train 系列 (12.2.0 - 13.0.x) 发行说明

13.0.7-30

已知问题

  • 为 Ussuri 和 Train 版本的 OpenStack 中的 TinyIPA ramdisk 提供支持的 TinyCore Linux 10.x,由于时间推移导致证书验证问题,无法构建。我们嵌入了一个修复程序,仅供 Ironic 的 CI 使用。作为一般提醒,TinyIPA 不应用于生产部署。

升级说明

  • 从早期版本升级并使用 PXE 的用户应显式设置 [pxe]ipxe_bootfile_name[pxe]uefi_ipxe_bootfile_name,以及可能需要设置 [pxe]ipxe_bootfile_name_by_arch 设置,以及一个 iPXE 特定的 [pxe]ipxe_config_template 覆盖,如果需要的话。

    [pxe]ipxe_config_template 设置为空值将导致使用 [pxe]pxe_config_template。默认值指向提供的标准 iPXE 模板,因此只有高度定制的用户才需要调整此设置。

  • 已添加对 IPMI BMC 硬件供应商的自动检测,以适当处理 IPMI BMC 的变化。Ironic 现在将查询此信息并保存该值(如果尚未设置),以避免为每次操作都进行查询。升级的用户应该期望对于硬件类型为 ipmi 的节点,第一次电源状态同步时间会延长。

  • 在 Train 版本中,要在 HTTPS 连接上使用证书文件,iRMC 驱动程序需要 python-scciclient 版本为 >=0.8.2,<0.9.0 或 >=0.9.5,<0.10.0,并且打包版本 >=16.5

  • 如果使用 redfish-virtual-media,用户可能需要检查他们的 /httpboot/redfish 文件夹权限。此前,conductor 正在使用不正确的权限创建该文件夹。

  • 已为 redfish-virtual-media 启动接口添加了一个权限设置,允许在正在使用驱动程序时显式设置文件权限。新的 [redfish]file_permission 设置 默认值是 ``0u644,或者如果使用 chmod 在命令行手动更改,则为 644。用户可能需要调整此设置,如果他们正在使用特定的 umask 来规避权限设置缺陷。

安全问题

  • 修改了 irmc 硬件类型,以包含控制 HTTPS 证书验证执行的能力。默认情况下,这是强制执行的。python-scciclient 版本必须为 >=0.8.2,<0.9.0 或 >=0.9.5,<0.10.0,否则将不会进行证书验证。

错误修复

  • 修复了 Ironic 与 Cinder 的集成问题,这是由于最近与安全相关的修复导致的,详情请参见 bug 2004555。Ironic 中跟踪此修复的工作已记录在 bug 2019892 中。Ironic 现在向 Cinder 发送服务令牌,这允许绕过作为原始 CVE-2023-2088 修复的一部分添加的访问限制。Ironic 本身不受影响,但由此添加的限制确实影响了 Ironic 的使用。这是因为 Ironic 卷附件不在共享“计算节点”上,而是映射到物理机器,并且 Ironic 在初始附件之后处理附件生命周期。

  • 解决了无法为基于 iPXEPXE 的启动操作显式设置不同引导加载程序的问题,通过各自的 ipxepxe 启动接口实现。

  • 修复了 grub2 配置文件的问题。较高版本的 grub2(例如 2.05 或 2.06-rc1)使用 grub.cfg-01-MAC,而较低版本的 grub2(例如 2.04)使用 MAC.conf,因此我们生成两个路径以与两者兼容。

  • 修复了 idrac-wsman 管理接口 set_boot_device 方法,该方法在存在现有作业时会使部署失败,并显示错误“无法更改电源状态为‘’power on‘’通过‘’重新启动‘’。错误:DRAC 操作失败。原因:找到未完成的配置作业:<现有作业列表>。在重试之前,请确保它们已完成。”。现在可以存在非 BIOS 作业在部署期间。对于存在 BIOS 作业的情况,仍然会失败。在这种情况下,应考虑迁移到 idrac-redfish,该接口在设置启动设备时没有此限制。

  • 修复了在请求使用 UEFI 启动模式并持久启动到 DISK 时出现的问题,某些版本的 ipmitool 无法同时正确处理多个选项。虽然部分逻辑在 upstream ipmitool 开发中得到了解决,但新版本尚未发布,并且供应商维护着 ipmitool 工具的下游分支。考虑到供应商特定的 选择器差异以及当前 upstream ipmitool 社区的立场,仅在 Ironic 中处理此逻辑才有意义。部分原因是,如果已经设置,选择器值将不会被更新。现在 ironic 始终传输 UEFI 的选择器值。

  • 修复了支持 UEFI 的 Supermicro BMC 与硬件类型为 ipmi 的问题,以便将适当的启动设备选择器值发送到远程 BMC,以指示从本地存储启动。这适用于持久和一次性启动应用程序。有关更多信息,请参阅 story 2008241

  • 修复了硬件类型为 ipmi 的问题,在请求使用 UEFI 启动模式和“一次性”启动到 PXE 时出现的问题。由于 Ironic 现在专门传输原始命令,因此该设置应该被正确应用,而此前 PXE 启动操作可能以前在 Legacy BIOS 模式下发生。

  • 修复了通过将 PERC H740P 控制器模式从 Enhanced HBA 更改为 RAID 在 delete_configuration 清理步骤中创建虚拟磁盘的问题。PERC H740P 控制器支持 RAID 模式和 Enhanced HBA 模式。当控制器处于 Enhanced HBA 模式时,它会从非 RAID 物理磁盘创建单个磁盘 RAID0 虚拟磁盘。因此,由于没有可用的物理磁盘,对受支持的 RAID 的 VD 创建请求将失败。此补丁将 PERC H740P RAID 控制器转换为 RAID 模式,如果发现启用了 enhanced HBA 模式。有关更多详细信息,请参阅 bug 2007711

  • 修复了使用 idrac-wsman 管理接口关机时,正在进行的清除作业队列清理步骤的问题。在此修复之前,清理步骤将在关机节点时失败。

  • 添加了 driver_info/irmc_verify_ca 选项以指定证书文件。driver_info/irmc_verify_ca 的默认值为 False。

  • 添加了对缺少 BootSourceOverrideMode 标志的 Redfish BMC 的处理,这样如果 BMC 不支持此字段,部署就不会再出现致命错误。这在仅具有 ComputerSystem 资源 boot 的部分实现的 BMC 上很常见,也可能在某些收到 Redfish 部分支持更新的旧代 BMC 上观察到。

  • 修复了 Redfish BMC 的连接缓存问题,以前的 AccessErrors 并未使缓存的连接从被重新使用中排除。Ironic 现在将显式打开一个新连接,而不是使用缓存中的先前连接。在正常情况下,sushy redfish 库会检测并刷新会话,但是存在一种情况,它可能无法检测到故障并包含缓存的会话凭据数据,最终阻止通过 Redfish 访问 BMC,直到缓存条目过期或 ironic-conductor 服务重新启动。有关更多信息,请参阅 story 2009719

  • 修复了 redfish-virtual-media 和相关驱动程序,以使用显式文件权限,而不是依赖于 ironic-conductor umask,后者可能不正确。可以使用 [redfish]file_permission 设置进行调整。

  • 修复了 redfish-virtual-media 驱动程序的问题,该问题导致 /httpboot/redfish 文件夹的文件夹权限使用不正确的权限创建。

  • 故事 2008252 的修复在更改启动设备后同步了启动模式,因为 Supermicro 节点如果在启动设备集中未包含,则会重置启动模式。但是,这可能会导致 Dell 节点在更改模式 uefi->bios 或 bios->uefi 时出现问题,有关详细信息,请参阅 故事 2008712。将启动模式的同步限制为 Supermicro。

  • 当 Ironic 通过 Redfish 配置 BootSourceOverrideTarget 设置时,在 Supermicro BMC 上,它必须始终配置 BootSourceOverrideEnabled,否则它将恢复到默认值(一次),请参阅 story 2008547 以获取详细信息。这与当前为其他 BMC 实现的不同,在其他 BMC 中,如果当前设置匹配,则不会配置 BootSourceOverrideEnabled(请参阅 story 2007355)。

    这要求 node.properties[‘vendor’] 为 ‘supermicro’,Ironic 将从 Redfish 系统响应设置,或者可以手动设置。

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

  • 修复了使用 idrac-wsman 管理接口关机时,正在进行的清除作业队列清理步骤的问题。在此修复之前,清理步骤将在关机节点时失败。

其他说明

  • [conductor]power_state_change_timeout 默认值从 30 秒延长到 60 秒。这是因为某些具有 Redfish 的 API 接口可能会缓存电源状态,因此在请求更改后可能需要更长的时间才能更新。有关更多信息,请参阅 此处

  • ipmi 硬件类型添加了一个新的 detect_vendor 管理接口方法。该方法被推广为更高级别的接口,因为对硬件供应商有逻辑意识的根本需求对于略有不同的行为需要供应商无关的驱动程序是必要的。

13.0.7

已知问题

  • 某些 ipmitool 构建,尤其是在运行 Red Hat Enterprise Linux 8.2 的机器上,已经更改了提供的默认密码套件,这可能导致 ipmitool 无法完全协商与 BMC 的连接。遇到这种情况的用户应使用 driver_info 字段中的 ipmi_cipher_suite 参数来覆盖并直接断言所需的密码。由于尝试二级自动协商以及已知 BMC 供应商行为的潜在安全隐患,必须由用户识别并显式设置,因为尝试导航此类情况的逻辑可能会产生不良结果。

错误修复

  • 修复了 ansible 部署接口中的一个问题,该问题导致自动 root 设备选择意外地选择了系统 CD-ROM 设备,这在使用虚拟介质启动时很可能发生。 ansible 部署接口现在忽略所有 Ramdisks、Loopbacks、CD-ROM 和软盘设备。

  • 修复了 idrac 硬件类型中的一个错误,在 RAID 控制器上创建一个或多个虚拟磁盘时,该控制器支持直通模式(PERC H730P),清理步骤将在实际创建虚拟磁盘的作业完成之前完成。这可能导致客户端尝试对 iDRAC 执行另一个操作,该操作会创建一个配置作业,并且该操作将失败,因为创建虚拟磁盘的作业仍在执行中。此补丁通过仅在完成创建虚拟磁盘的作业后才允许清理步骤完成来修复此问题。有关更多详细信息,请参阅 bug 2007285

  • 某些 RAID 控制器(PERC H730P)要求在 RAID 上构建之前将物理磁盘从非 RAID(JBOD)模式切换到 RAID 模式。当发生此转换时,由于一些空间分配给 RAID 模式维护,物理磁盘上的可用空闲空间会减少。如果用户请求一个虚拟磁盘(例如 RAID 1),其大小接近物理磁盘在 JBOD 模式下的最大大小,那么在物理磁盘从 JBOD 转换为 RAID 模式后,由于 RAID 模式维护使用的空间,创建虚拟磁盘将失败,因为没有足够的空间。此补丁通过在物理磁盘转换完成后并已知转换驱动器上的空闲空间后重新计算 RAID 卷大小来解决此问题。请注意,这可能会导致虚拟磁盘比请求的大小略小,但仍然是驱动器可以支持的最大大小。有关更多详细信息,请参阅 bug 2007359

  • 修复了哈希环代码中的一个潜在竞争,该竞争可能导致哈希环在初始加载后永远不会更新。

  • 修复了弃用的 idrac 硬件接口实现 __init__ 方法,以在发出关于其弃用的警告日志消息之前调用其基类 __init__ 方法。有关更多信息,请参阅 story 2008197

  • 允许通过新的 driver_info 参数 ipmi_cipher_suite 配置 IPMI 密码套件,以使操作员能够导航 ipmitool 行为更改,围绕支持的密码。

  • 通过 Redfish 更改启动设备后,检查报告的启动模式是否与配置的模式匹配,如果不匹配,则将其设置为配置的值。某些 BMC 在通过 Redfish 设置设备时会更改启动模式,请参阅 story 2008252 以获取详细信息。

13.0.6

新特性

  • 添加了一个新的 [ipmi]use_ipmitool_retries 选项。如果设置为 True 并且 ipmitool 支持时序,则重试次数和命令间隔将传递给 ipmitool,以便 ipmitool 执行重试。如果设置为 False,ironic 将执行重试。默认值为 True

已知问题

  • 某些 BMC 不支持较新版本的 ipmitool 使用的 Channel Cipher Suites 命令。这些版本的 ipmitool 将为每次 ipmitool 重试重新发送此命令,导致响应时间过长。将 [ipmi]use_ipmitool_retries 设置为 false 将避免这种情况,因为 ironic 级别将实现重试。

错误修复

  • 修复了 ansible 部署接口中的一个问题,该问题导致自动 root 设备选择意外地选择了系统 CD-ROM 设备,这在使用虚拟介质启动时很可能发生。现在,ansible 部署接口会忽略所有 Ramdisks、Loopbacks、CD-ROM 和软盘设备。

  • 修复了 idrac 硬件类型中的一个错误,在 RAID 控制器上创建一个或多个虚拟磁盘时,该控制器支持直通模式(PERC H730P),清理步骤将在实际创建虚拟磁盘的作业完成之前完成。这可能导致客户端尝试对 iDRAC 执行另一个操作,该操作会创建一个配置作业,并且该操作将失败,因为创建虚拟磁盘的作业仍在执行中。此补丁通过仅在完成创建虚拟磁盘的作业后才允许清理步骤完成来修复此问题。有关更多详细信息,请参阅 bug 2007285

  • 硬件类型 idrac 在 RAID 上构建之前将物理磁盘从 JBOD 模式转换为 RAID 模式。

  • 硬件类型 idrac 在通过 raid 接口完成 delete_configuration 清理步骤后,将物理磁盘从 RAID 模式转换为 JBOD 模式。这确保了通过删除虚拟磁盘释放的单个磁盘对操作系统可见。

  • 当 Ironic 执行 IPMI 重试时,应使用配置的 min_command_interval,而不是默认值 1,后者对于某些 BMC 来说可能太短了。

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

13.0.5

错误修复

  • 修复了一个罕见的问题,当代理在部署后成功关闭节点电源后,ironic 却从未了解此事并执行了另一个重新启动。

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

  • 修复了使用 direct 部署接口的快速跟踪部署,该部署以前会挂起。

  • 修复了针对不支持持久启动设备设置的硬件的解决方法,该硬件使用 redfishidrac-redfish 管理接口实现。当检测到这种情况时,ironic 将回退到一次性启动设备设置,并在每次重新启动或开机时恢复它。

    有关更多信息,请参阅 story 2007733

  • 不再尝试在构建 RAID 时将 local_gb 设置为 MAX,而是使用 MAX 作为其大小来使用根磁盘。

13.0.4

新特性

  • 对于在 DHCPv6-有状态网络上进行的裸机操作,现在可以为用于配置、清理、救援或检查的 neutron 端口分配多个 IPv6 地址。新的参数 [neutron]/dhcpv6_stateful_address_count 控制要分配的地址数量(默认值:1)。

  • 使 redfish 硬件类型的管理接口不会更改当前的启动频率,如果当前设置与期望的设置相同。目标是在尽可能避免触碰潜在的故障 BMC 选项的情况下。

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

已知问题

  • 已知某些启用了 redfish 的硬件不支持 Bare Metal 服务用于已部署实例的持久启动设备设置。 redfish 硬件类型尝试解决此问题,但对这种实例进行带内重启可能会导致其启动不正确。应在节点的启动固件中配置可预测的启动顺序以避免问题,并且至少必须启用元数据清理。有关技术细节,请参阅 此邮件列表主题

升级说明

  • 将用于 ansible deploy_interface 的 Ansible 的最低版本更改为版本 2.5。

  • 现在可以将 sushy 的版本更新到 3.2.0 或更高版本,以解决使用 Redfish 基板管理控制器管理持久启动模式设置时出现的问题。

  • 如果 [DEFAULT]force_raw_images 设置为 true,则将不会使用 MD5 来重新计算图像校验和。这要求 ironic-python-agent ramdisk 的版本至少为 3.4.0。

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

安全问题

  • 当图像强制为原始图像时,图像校验和重新计算现在使用 SHA3-256,如果选择了 MD5。现在这是无条件的。

错误修复

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

  • 修复了 ansible 部署接口中 Python 3 的默认磁盘检测。 之前使用了随机磁盘,导致启动失败,现在使用第一个磁盘(如预期)。这需要将所需的 Ansible 最低版本提高到 2.5。

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

  • 修复了使用 idrac-wsman RAID 接口的 RAID 配置,节点将永远停留在“清理等待”配置状态。请参阅 story 2007567

  • 修复了一个问题,如果 conductor 的主机名大小写在重新启动 conductor 服务之前发生更改,节点可能会被锁定无法更改。

  • 通过将节点启动模式更改与其他启动参数更改(例如启动设备、启动频率)解耦,从而改进了与 Redfish BMC 的互操作性。此修复需要较新版本的 sushy 库,版本 3.2.0

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

  • 通过支持分配多个 IPv6 地址,解决了在 DHCPv6-有状态网络上网络启动时出现的“没有可用地址”问题。请参阅 bug: 1861032

  • 修复了启动加载程序安装过程中代理命令问题,该问题可能表现为在重负载 IO 条件下连接超时。现在安装命令具有内部超时,该超时是 conductor 范围内的 [agent]command_timeout 的两倍。有关更多信息,请参阅 bug 2007483

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

  • 为了提供针对某些硬件上不正确的启动顺序问题的解决方法,redfish 硬件类型现在支持 noop 管理接口,类似于 IPMI 和 SNMP。

  • 现在通过关机请求后接开机请求来实现使用 redfish 电源接口重启节点,以避免在节点在重启请求后仍保持上电状态时返回成功。

  • 提供了一个针对不支持持久启动设备设置的硬件的解决方法,该硬件使用 redfish 硬件类型。当检测到这种情况时,ironic 将回退到一次性启动设备设置,并在每次重新启动时恢复它。

其他说明

  • 在清理过程中,现在会收集 ramdisk 日志,就像在部署过程中一样。

13.0.3

安全问题

  • 防止通过代理心跳 /v1/heartbeat/<node_uuid> 端点进一步更新代理 callback_url,因为 callback_url 应该在清理、配置或救援过程中保持稳定。如果发生意外的代理重启等情况,心跳操作现在将被忽略。有关更多信息,请参阅 story 2006773

错误修复

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

  • 使用 SHA256 比较文件内容,而不是 MD5。这提高了 FIPS 兼容性。

  • 更正了节点清理和部署过程的入口路径中的逻辑,以禁止在启用且正在使用 fast_track 时过早删除 agent_url。这使得快速跟踪清理和部署操作能够成功。

  • 修复了一个问题,当使用 ipxe 接口且 [pxe]ipxe_enabled 设置为 false 时,PXE 配置没有得到正确处理,从而阻止机器执行成功的 iPXE 启动。

  • 修复了通过本地 HTTP 服务器([redfish]use_swift=false)提供虚拟媒体 iso 时的路径问题。

  • 修复了 fasttrack 中一个问题,最近的安全相关更改阻止了 agent_url 字段在节点中更新,从而在功能上阻止 fast_track 成功,因为节点将出现异常,指示找不到 agent_url。所需的 agent_url 值现在在启用 fast track 功能时保留,因为正在运行的 ramdisk 没有被关闭。

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

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

13.0.2

安全问题

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

错误修复

  • 修复了 idrac 硬件类型中的一个错误,在该错误中,在具有混合控制器的主机上,其中一些控制器支持实时模式,而另一些控制器不支持实时模式,可能会发生竞争条件。该方法是仅在所有控制器都支持实时模式时才使用实时模式。这消除了竞争条件。有关详细信息,请参阅 bug 2006502 https://storyboard.openstack.org/#!/story/2006502

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

  • 修复了 redfish 管理接口中驱动传感器信息收集的问题。在此修复之前,已使用错误的 Redfish 模式来获取驱动资源,这导致异常并最终导致传感器数据收集失败。

  • 修复了一个可能导致在 PID 文件尚未创建时守护程序启动已返回成功返回代码而导致的 控制台锁定问题

  • 修复了 idrac 硬件类型中的一个错误,其中执行 clear_job_queue 清理步骤时,未删除待处理的非 BIOS 配置作业(例如创建/删除虚拟磁盘),然后再执行作业。

    有关详细信息,请参阅 bug 2006580 https://storyboard.openstack.org/#!/story/2006580

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

13.0.1

错误修复

  • 修复了 idrac 硬件类型中的一个错误,其中 RAID delete_configuration 清理步骤的配置作业即使在任何控制器上没有虚拟磁盘或热备件/专用热备件存在时也会被创建。有关详细信息,请参阅 bug 2006562 https://storyboard.openstack.org/#!/story/2006562

13.0.0

序言

“Choooooo! Choooooo!” 列车现在正在离开车站。OpenStack Bare Metal 即服务团队自豪地宣布发布 Ironic 13.0.0。此版本带来了长期期望的软件 RAID 配置功能、Redfish 虚拟媒体启动支持、传感器数据改进以及众多错误修复。我们希望您享受在 OpenStack Ironic 列车上的旅程。

新特性

  • idrac-wsman raid 接口添加了对部署步骤的支持。方法 apply_configurationdelete_configuration 可以用作部署步骤。

  • idrac-wsman raid 接口的 create_configuration 清理步骤添加了一个新的 delete_existing 参数,该参数可用于删除现有的虚拟磁盘。此参数的默认值为 False

  • ilo 硬件类型的 bios 接口添加了对部署步骤的支持。方法 factory_resetapply_configuration 可以用作部署步骤。

  • ilo 硬件类型的 management 接口添加了对部署步骤的支持。方法 reset_iloreset_ilo_credentialreset_bios_to_defaultreset_secure_boot_keys_to_defaultclear_secure_boot_keysupdate_firmware 可以用作部署步骤。

  • ilo5 硬件类型的 raid 接口添加了对部署步骤的支持。方法 apply_configurationdelete_configuration 可以用作部署步骤。

  • bios 接口的 redfish 硬件类型添加了部署步骤支持。可以使用 factory_resetapply_configuration 方法作为部署步骤。

  • 为支持虚拟介质启动的 redfish 硬件类型添加了虚拟介质启动接口。 redfish-virtual-media 启动接口与例如 PXE 启动接口一样运行在相同的内核/ramdisk 上,但是 redfish-virtual-media 启动接口在执行 UEFI 启动时,可以额外需要 EFI 系统分区镜像 (ESP)。 可以使用 [conductor]bootloader 配置选项或 [driver_info]/bootloader 节点属性来传递 ESP 位置给 ironic。 可启动的 ISO 镜像可以从 Swift 或运行在 ironic conductor 机器上的 HTTP 服务器提供给 BMC。 这由 ironic 配置选项 [redfish]use_swift 控制。

  • redfish 管理接口添加了传感器数据收集器。 收集温度、功率、冷却和驱动器健康指标。

  • target_raid_config 数据添加到 ironic 变量下,位于顶级键 raid_config 下,这将向 ansible 驱动程序公开 RAID 配置。 详情请参阅 story 2006417

  • idrac-wsman 管理接口添加了一个 clear_job_queue 清理步骤。 clear_job_queue 清理步骤清除生命周期控制器作业队列,包括任何待处理的作业。

  • ilo 硬件类型添加了一个 ilo-ipxe 启动接口,该接口允许实例级别的 iPXE 启用,而不是 conductor 范围内的 iPXE 启用。 要使用 ilo-ipxe 启动接口执行 iPXE 启动

    • ilo-ipxe 添加到 ironic.conf 中的 enabled_boot_interfaces

    • 使用 Ironic 文档关于 iPXE 启动配置 设置 TFTP 和 HTTP 服务器

    • 使用 --boot-interface ilo-ipxe 创建/设置裸机节点

  • 通过执行 API 通知,将实例的电源状态更改回调添加到 Compute 服务。 默认情况下启用此功能,可以通过新的 [nova]send_power_notifications 配置选项禁用它。

    当物理实例的电源状态发生变化时,Bare Metal 服务将向 Compute 服务发送一个 power-update 外部事件,这将导致 Compute 数据库中的实例电源状态更新。 它还增加了即使通过 Compute 服务 API 关机/启动,也可以通过 Bare Metal 服务 API 启动/关闭物理实例的可能性。

  • 部署和/或救援内核和 ramdisk 现在可以通过新的配置选项 deploy_kerneldeploy_ramdiskrescue_kernelrescue_ramdisk 分别进行配置。

  • 添加了一个新的配置选项 [drac]boot_device_job_status_timeout,它指定等待启动设备配置作业过渡到已计划状态的最大时间量(以秒为单位),以允许完成重新启动或上电操作。

  • 添加了对利用 Redfish 局域网 (OOB) 管理协议并与集成 Dell Remote Access Controller (iDRAC) 基板管理控制器 (BMC) 兼容的接口实现的初始 idrac 硬件类型支持,目前这些接口是管理和电源硬件接口。 它们命名为 idrac-redfish

    引入了 idrac 接口实现的新名称 idrac-wsman,并弃用了 idrac。 它们都使用 Web Services Management (WS-Man) 局域网 (OOB) 管理协议。

    idrac 硬件类型声明支持这些新的接口实现,以及它一直支持的所有接口实现。 支持的接口的优先级顺序保持不变。 依赖于 WS-Man 的接口实现继续具有最高优先级,并且新的 idrac-wsman 列在已弃用的 idrac 之前。 现在它支持以下接口实现,按从最高到最低的优先级顺序排列

    • bios: no-bios

    • boot: ipxe, pxe

    • console: no-console

    • deploy: iscsi, direct, ansible, ramdisk

    • inspect: idrac-wsman, idrac, inspector, no-inspect

    • management: idrac-wsman, idrac, idrac-redfish

    • network: flat, neutron, noop

    • power: idrac-wsman, idrac, idrac-redfish

    • raid: idrac-wsman, idrac, no-raid

    • rescue: no-rescue, agent

    • storage: noop, cinder, external

    • vendor: idrac-wsman, idrac, no-vendor

    有关更多信息,请参阅 story 2004592

  • 添加了对利用 Redfish 局域网 (OOB) 管理协议并与集成 Dell Remote Access Controller (iDRAC) 基板管理控制器 (BMC) 兼容的 inspect 接口实现的 idrac 硬件类型支持。 它命名为 idrac-redfish

    idrac 硬件类型声明支持该新的接口实现,以及它一直支持的所有 inspect 接口实现。 具有最高优先级的 inspect 接口仍然相同,那些依赖于 Web Services Management (WS-Man) 局域网 (OOB) 管理协议的接口。 新的 ‘idrac-redfish’ 紧随其后。 现在它支持以下 inspect 接口实现,按从最高到最低的优先级顺序排列:idrac-wsman, idrac, idrac-redfish, inspectorno-inspect

  • 添加了对基于 iLO5 的 HPE Proliant 服务器执行带外擦除磁盘操作的功能。 管理接口 ilo5 已添加到 ilo5 硬件类型。 为了支持此操作,已向管理接口 ilo5 添加了一个清理步骤 erase_devices

  • 添加了对 Intel IPMI 硬件的支持,并添加了一个新的硬件类型 intel-ipmitool。 此硬件类型与 ipmi 硬件类型相同,但增加了对 Intel Speed Select Performance Profile Technology 的额外支持。 它使用 intel-ipmitool 管理接口,该接口支持设置 Intel SST-PP 的所需配置级别。

  • Ironic API 服务现在支持使用 oslo.middleware 包解析 HTTP 代理标头,通过新的选项 [oslo_middleware]/enable_proxy_headers_parsing 启用(默认值为 False)。

    这使得 Ironic API 服务的更复杂的设置成为可能,例如,当同一个服务实例通过单独的代理服务器提供内部和公共 API 端点时。

    当启用代理标头解析时,将忽略 [api]/public_endpoint 选项的值。

  • 允许在部署、清理和救援期间重试 PXE/iPXE 启动。 默认情况下禁用此功能,可以通过将 [pxe]boot_retry_timeout 设置为重试启动后的超时时间(以秒为单位)来启用它。

    新的选项 [pxe]boot_retry_check_interval 定义了检查节点以获取超时频率,默认为 90 秒。

  • 添加了对使用 Train 版本 ironic-python-agent 部署或清理 ramdisk 时,通过通用硬件管理器进行软件 RAID 的支持。

    这可以通过 target_raid_config 配置单个 RAID-1 或一个 RAID-1 加上一个 RAID-N(其中 N 可以为 0、1 和 1+0)来实现。 RAID 在手动清理期间创建/删除。 请注意,此初始实现将使用所有可用设备来设置软件 RAID 设备。 有关更多信息,请参阅 Ironic 管理员 文档

  • 在 RAID delete_configuration 清理步骤期间,将释放外部驱动器以及全局和专用热备用盘。

升级说明

  • 为了支持 nova 的电源状态更改回调,必须在 Bare Metal 服务配置中配置 [nova] 部分。 由于此功能是 nova 的 Train 版本的新功能,因此只有在所有 nova-compute 实例都升级到 nova 的 Train 版本后,才应将其设置为 True

  • Cisco cisco-ucs-managedcisco-ucs-standalone 硬件类型以及 cimcucsm 硬件接口,这些接口在 12.1.0 版本中已被弃用,现在已被删除。

    升级后,如果在 ironic 的配置选项中指定了这些硬件类型或接口中的任何一个,ironic-conductor 服务将无法启动。 具有这些硬件类型或接口的任何现有的 ironic 节点在升级后将变得无法运行。 如果正在使用这些硬件类型或接口,应将受影响的节点更改为使用其他硬件类型或接口;或者从其他地方单独安装这些硬件类型(和接口)。 有关更多信息,请参阅 story 2005033

  • 已删除 inspector 部分中的已弃用的配置选项 enabledservice_url

  • 不再需要 python-ironic-inspector-client 包用于 inspector inspect 接口(而是使用 openstacksdk)。

  • 已删除 [neutron] 部分中的已弃用的选项 urlurl_timeoutauth_strategy。 使用 endpoint_overridetimeoutauth_type 分别。

  • 当清理过程中发生故障时,节点将不再关机。 更改了行为以防止损害并允许在敏感操作(例如固件升级)执行并清理过程中失败时进行管理员干预。

  • 已删除 [glance] 部分中的已弃用的选项 glance_api_serversglance_api_insecureglance_cafileauth_strategy。 请使用相应的 keystoneauth 选项。

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

  • 使用 irmc 硬件类型的用户应切换到 ipxe 启动接口,而不是弃用的 [pxe]ipxe_enabled 选项。

  • 已删除对 CoreOS Ironic Python Agent 镜像的显式支持。 如果您使用基于 CoreOS 的 ramdisk,则可能需要将 coreos.configdrive=0 重新添加到您的 PXE 模板中,有关背景信息,请参阅 story 1433812

  • 已弃用的 ironic/api/app.wsgi 脚本已被移除。必须使用自动生成的 ironic-api-wsgi 脚本代替。

  • 已移除对 elilo 的支持,因为该支持已被弃用,并且大多数 Linux 发行版已停止提供 elilo。用户应迁移到其他 PXE 加载程序。

弃用说明

  • 配置选项 [glance]glance_num_retries 已重命名为 [glance]num_retries。旧名称将在未来的发布版本中移除。

  • idrac 接口实现名称已被弃用,推荐使用新的名称 idrac-wsman,并且可能在未来的发布版本中移除。每次加载 idrac 接口实现时,将记录弃用警告。请使用 idrac-wsman 代替。

  • ironic-lib 配置选项 [disk_utils]iscsi_verify_attempts 已被弃用,推荐使用

    • [iscsi]verify_attempts 来指定建立 iSCSI 连接的尝试次数。

    • [disk_utils]partition_detection_attempts 来指定查找新创建分区的尝试次数。

错误修复

  • 修复了一个问题,如果作业队列中存在待处理的 BIOS 配置作业,那么 ironic 将放弃对节点的内省尝试,这将导致整体内省失败。

  • 允许删除活动节点上未绑定的端口。有关详细信息,请参阅 story 2006385

  • 修复了一个令人困惑的 AttributeError,如果适配器返回 None 作为裸机 API,则会发生该错误。

  • 防止在找不到匹配的端点时忽略适配器配置选项。现在会引发错误。

  • 通过立即将节点的电源状态更改通过外部事件传递给 Compute 服务,Bare Metal 服务成为节点电源状态的事实来源,从而防止 Compute 服务在 Compute 和 Bare Metal 服务之间的定期电源状态同步期间强制实例进入错误的电源状态。

    注意

    由于 nova-ironic 电源同步任务在从 Bare Metal 服务接收到电源状态更改事件期间或之前发生,因此存在竞争条件的可能性,在这种情况下,实例状态将被强制写入裸机节点。

  • 修复了 ansible 部署接口的发现 playbook 中的一个问题,该问题阻止了在 Python 3 下收集 WWN 和序列号。

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

  • 修复了使用 ansible 部署接口部署非公共镜像的问题。

  • 目前 Ironic 允许对处于维护模式的节点进行部署或清理。但是,心跳不会对这些节点采取任何操作,因此如果节点未退出维护模式,部署或清理将永远无法完成。添加了一个新的配置选项 [conductor]allow_provisioning_in_maintenance(默认值为 True)来配置此行为。如果将其设置为 False,则将禁止对处于维护模式的节点进行部署和清理。

  • 修复了异步部署步骤轮询完成的问题,其中该步骤可能无法执行。驱动程序实现可以使用 deployment_pollingcleaning_polling 标志来指示驱动程序正在轮询完成。有关详细信息,请参阅 story 2003817

  • 修复了 idrac 硬件类型中的一个问题,在开机或重新启动操作期间,配置作业不会转换为正确的状态并开始执行。如果正在更改启动设备,系统可能会在作业准备好之前完成其 POST,从而将作业保留在队列中,并且系统将从错误的设备启动。有关详细信息,请参阅 bug 2004909

  • 修复了一个错误,即 ironic 在清理失败时会关闭节点。现在,节点保持上电状态(如文档所述)。

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

  • 修复了当 shellinabox 进程在指定超时时间到期之前无法启动时,节点被锁定时间超过 [console]subprocess_timeout 秒的 问题

  • 修复了在为 PERC H740P 控制器磁盘创建清理步骤时,先创建磁盘,然后控制器变得繁忙,无法创建后续磁盘的问题。

  • 修复了部署模板中异步带外部署步骤失败的问题。有关详细信息,请参阅 story 2006342

  • 修复了一个问题,当用户尝试使用非 iPXE UEFI 启动时,如果他们的 dhcp_provider 设置为 none,则会遇到故障。

  • 修复了 iLO UEFI iSCSI 启动中的一个错误,如果服务器有多个 NIC 适配器,则会失败,因为 Proliant 服务器对创建 iSCSI NIC 源的限制为四个,而现有的实现会尝试创建更多并因此失败。

  • 将缺失的 ipxe 启动接口添加到 irmc 硬件类型。它应该用于代替弃用的 [pxe]ipxe_enabled 配置选项。

  • 修复了 redfish BIOS 接口的清理步骤问题,该问题导致在清理重新启动后 IPA ramdisk 无法启动。有关详细信息,请参阅 story 2006217

  • 修复了 UEFI 启动模式下 ISO 创建中的一个问题,当提供 efiboot.img 文件并且使用配置 [DEFAULT]/grub_config_path 设置的 grub.cfg 文件目录与 efiboot.img 文件的目录不相同。有关详细信息,请参阅 story 2006218

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

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

  • 修复了在创建 RAID 时,如果 ‘target_raid_config’ 中的任何 ‘logical_disks’ 都没有 ‘controller’ 参数的问题。有关详细信息,请参阅 story 2006316

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

  • 提供了一个选择加入的修复程序,通过新的配置选项 [neutron]add_all_ports,更改部署和清理操作的默认端口附加行为。此选项导致 ironic 将所有端口信息传输到 neutron,而不是仅传输单个物理网络端口。这使得运营商能够成功运行具有 Neutron ML2 驱动程序的静态端口组配置,而此前网络配置会失败。

    当这些端口配置为 pxe_enabled 设置为 False 时,neutron 将被要求不要为端口分配 IP 地址。这是为了防止根据物理交换机配置和静态端口组配置而可能发生的其他问题。

  • 修复了在配置网络附件期间,neutron 端口使用相同的数据结构被重用的问题。

其他说明

  • 此版本允许通过 [ipmi]additional_retryable_ipmi_errors 配置可重试的 ipmitool 异常,以便根据环境,运营商可以允许重试包含指定子字符串的 ipmitool 命令。