Xena 系列 (18.0.0 - 18.2.x) 发行说明

18.3.0-21

升级说明

  • 升级 Ironic 以解决 qemu-img 镜像转换安全问题时,还需要升级 ironic-python-agent ramdisk。

  • 作为对 qemu-img 镜像转换安全问题进行修复的结果,Ironic 添加了一个新的配置参数 [conductor]permitted_image_formats,默认值为“raw,qcow2,iso”。 Raw 和 qcow2 格式的磁盘镜像是在 Ironic 社区始终声明允许并期望与 Ironic 一起使用的镜像格式。 这些格式也与社区测试的格式相匹配。 如果利用其他磁盘镜像格式的操作员,可能需要进一步修改此设置。

安全问题

  • Ironic 现在检查提供的镜像格式值与镜像文件的检测格式是否匹配,如果值不匹配,将阻止部署。 如果与 Glance 一起使用并且检测到元数据不匹配,则需要重新上传镜像,以表示更正后的元数据。 这是由跟踪的 CVE-2024-44082 引起的 bug 2071740

  • Ironic 始终 检查通过 conductor 传递的提供的用户镜像内容是否安全,然后再部署节点,即使镜像以 raw 格式提供。 这用于识别镜像的格式和镜像的整体安全性,以便明确拒绝具有未知或不安全功能使用的源镜像。 可以通过将 [conductor]disable_deep_image_inspection 设置为 True 来禁用此功能。 这是由跟踪的 CVE-2024-44082 引起的 bug 2071740

  • Ironic 还会检查通常作为直接下载 URL 提供的镜像,由 ironic-python-agent ramdisk 提供。默认情况下启用此功能,会增加导管的网络流量和磁盘空间利用率。可以通过将 [conductor]conductor_always_validates_images 设置为 False 来禁用此级别的检查。不建议这样做,因为 Zed 版本及更早版本的 ironic-python-agent ramdisk 将无法使用,原因是存在回退回归风险。这是由 CVE-2024-44082 跟踪的 bug 2071740 导致的。

  • Ironic 现在显式执行 [conductor]permitted_image_formats 设置中允许的镜像类型列表,默认值为“raw”、“qcow2”和“iso”。 虽然该项目历来一直声明允许的镜像为“qcow2”和“raw”,但之前可以提供其他 qemu-img 已知的镜像格式,并且该实用程序会尝试转换镜像。 需要“iso”支持才能支持“从 ISO 启动”ramdisk。

  • Ironic 现在显式将源输入格式传递给 qemu-img 的执行,以限制可能评估镜像的允许 qemu 磁盘镜像驱动程序,以防止针对 qemu-img 的不匹配格式攻击。

  • ansible 部署接口示例 playbook 现在为 qemu-img 的执行提供输入格式。 如果您正在使用自定义 playbook,请将“-f {{ ironic.image.disk_format }}”添加到对 qemu-img 的调用中。 如果您没有这样做,qemu-img 将自动尝试猜测,这可能导致已知的不安全问题,因为源格式驱动程序不正确。

  • 已经实施任何自定义部署驱动程序或附加功能的运营商应审查他们的下游代码,以确保他们正确调用 qemu-img。 如果有任何问题或疑虑,请联系 Ironic 项目开发人员。

  • 提醒操作员,他们应在其环境中利用清理。 禁用任何安全功能,例如清理或镜像检查,是自己承担风险。 如果您在使用安全相关功能时遇到任何问题,请不要犹豫,向项目提交错误报告。

  • [conductor]disable_deep_image_inspection 设置会自动传递给 ironic-python-agent ramdisk,并将阻止这些运行 ramdisk 在写入镜像之前执行深度检查。

  • [conductor]permitted_image_formats 设置会自动传递给 ironic-python-agent ramdisk。 如果需要显式允许其他格式,则应在 Ironic 服务配置中进行设置。

  • Ironic 中的一个问题已得到解决,即在将镜像转换为 raw 格式镜像之前,不会检查提供的镜像校验和。

    在默认设置下,这通常不会发生,但是 image_download_source 选项,该选项可设置为节点级别进行单个部署,默认情况下,对于该裸机节点在所有情况下,或者通过 [agent]image_download_source 配置选项设置为 local。 默认设置是 http

    这与 [DEFAULT]force_raw_images 设置为 True 结合使用,导致 Ironic 下载并转换文件。

    在 Ironic 在更大的 OpenStack 部署中使用时,镜像来自 Glance 镜像服务,之前的模式没有问题。 该问题是由于能够提供、缓存和转换由经过身份验证的用户提供的 URL 提供的磁盘镜像而引入的。

    Ironic 现在将在镜像转换之前验证 conductor 提供的用户提供的校验和。 可以通过设置 [conductor]disable_file_checksum 配置选项来禁用此功能。

  • 修复了 OSSA-2025-001,其中 Ironic 在用作镜像源时,没有正确过滤 file:// 路径。 这将允许 conductor 可以访问的任何文件被用作镜像来尝试部署。

    添加 CONF.conductor.file_url_allowed_paths,一个默认允许列表,默认为 /var/lib/ironic/shared/html/opt/cache/files/vagrant/templates,允许操作员进一步限制 Conductor 在提供 file:// URL 时获取镜像的位置。此默认值是根据 Ironic 下游项目(包括 Metal3、Bifrost 和 OpenShift)的已知用法选择的。这些默认值可能会在以后更改为更严格。鼓励使用 file:// URL 的操作员即使当前默认值已足够,也显式设置此值。希望完全禁用使用 file:// URL 部署的能力的操作员应将此配置设置为 “” (空字符串)。

    希望恢复原始不安全行为的操作员应将 CONF.conductor.file_url_allowed_paths 设置为 /。 请注意,在 2025.2 版本及更高版本中,/dev/sys/proc/run/etc 将作为一项安全措施被无条件阻止。

    此问题仅在 Ironic 的自动清理过程被禁用并且服务配置为允许不受信任的 API 用户直接部署的情况下,才构成重大的安全风险,例如独立 Ironic 安装或将节点所有权授予项目的环境。

错误修复

  • 修复了与 qemu-img 工具的执行相关的图像处理中的多个问题,该工具用于图像格式转换,恶意用户可以制作磁盘镜像以潜在地从 ironic-conductor 进程的操作系统环境中提取信息。

    Ironic 现在明确地强制执行批准的图像格式列表,作为 [conductor]permitted_image_formats 列表,该列表反映了 Ironic 项目历史上测试过的图像格式,并被认为是可用的。测试不基于文件扩展名,而是基于对磁盘镜像文件的内容指纹识别。这被跟踪为 CVE-2024-44082,通过 bug 2071740

  • 修复了一个安全问题,即 Ironic 在下载磁盘镜像文件时不会对其进行校验和检查,而 Ironic 被要求下载并将镜像转换为原始镜像格式。 这需要将 image_download_source 显式设置为 local,这不是默认设置。

    可以通过将 [conductor]disable_file_checksum 设置为 True 来禁用此修复,但是此选项将在新的 Ironic 主要版本中删除。

    因此,已经引入了与 Ironic-Python-Agent 对 standalone Ironic 用户使用的校验和的支持相一致。 这包括支持通过 URL 提供远程校验和文件,以防止破坏可能无意中利用先前代码路径的现有用户。 可以通过将 [conductor]disable_support_for_checksum_files 设置为 True 来禁用此支持。

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

  • 修复了 iRMC 驱动程序在 parse_driver_info 中的错误,如果启用了 FIPS,则 SNMP 版本始终需要为版本 3,即使 iRMC 驱动程序的 xxx_interface 实际上不使用 SNMP。

  • 修复了在线升级逻辑中的一个问题,节点 Traits 和 BIOS 设置的数据库模型导致在线数据迁移时出现错误。这是因为这些表最初是作为 Nodes 数据库表的扩展创建的,并且数据库的模式略有不同,以至于如果在这些表中存在要迁移的数据(如果早期 BIOS 设置采用者在升级到 Ironic 的 Yoga 版本之前在数据库中拥有数据),则会发生错误。

    在线升级参数现在在适用时替换备用主键名称。

  • 修复了一个问题,系统范围用户无法在启用清理的情况下将节点置于 manageable 状态,因为 Neutron 客户端会尝试使用其用户的令牌为清理操作创建 Neutron 端口,这是设计所致。这是因为使用 system 范围发出的请求没有关联的项目,并且请求失败。

    Ironic 现在检查请求是否使用 system 范围发出,如果是,则使用内部凭据配置与 Neutron 通信。

  • 修改 iRMC 驱动程序以使用 ironic.conf [deploy] default_boot_mode 来确定默认 boot_mode。

  • 修复了 Lenovo 硬件的问题,在代理以 UEFI 引导模式将镜像写入主机后,系统固件可能会显示一个蓝色的“Boot Option Restoration”屏幕,需要手动干预才能引导已部署的节点。 该问题源于对节点的基础 NVRAM 配置进行了多次更改。 Lenovo 工程师建议更改 UEFI NVRAM,不要通过 BMC 进行任何进一步的更改来配置下一次引导。 Ironic 现在在 Lenovo 硬件上这样做。 有关此问题的更多信息和背景,请参阅 bug 2053064

18.3.0

升级说明

  • 添加了 sha256sha384sha512 作为 iRMC 驱动程序支持的 SNMPv3 身份验证协议。

错误修复

  • 修复了一个问题,如果启用了 selinux 并强制执行,并且发布的镜像是一个硬链接,则会保留源 selinux 上下文,导致在使用硬链接 URL 检索镜像时访问被拒绝。

  • 修复了 iRMC 驱动程序的 SNMPv3 消息身份验证和加密功能。iRMC 驱动程序和 iRMC 之间的 SNMPv3 身份验证仅通过安全名称进行,没有密码和加密。为了提高安全性,现在将以下参数添加到节点的 driver_info 中,可用于身份验证

    • irmc_snmp_user

    • irmc_snmp_auth_password

    • irmc_snmp_priv_password

    • irmc_snmp_auth_proto (可选,默认值为 sha)

    • irmc_snmp_priv_proto (可选,默认值为 aes)

    irmc_snmp_user 替换了 irmc_snmp_security。如果设置了 irmc_snmp_user,则将忽略 irmc_snmp_securityirmc_snmp_auth_protoirmc_snmp_priv_proto 也可以通过 [irmc] 部分的以下选项在 /etc/ironic/ironic.conf 中设置

    • snmp_auth_proto

    • snmp_priv_proto

  • 修复了 PXE 初始化中的一个竞争条件,其中重试我们怀疑可能是失败的 PXE 启动操作的逻辑没有检查是否已建立 agent token,这是代理初始化的第一步。

其他说明

  • python-scciclient 库的最低版本更新到 0.11.3

18.2.2

已知问题

  • 在使用 jsonschema 4.0.0 或更高版本时,请确保在自定义网络数据或 RAID 模式中包含正确的 $schema 字段。

安全问题

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

错误修复

  • 修复了在仅提供 ValueDisplayName 时,在 redfish BIOS 接口中检测 BIOS 设置枚举的允许值的问题。

  • anaconda 部署接口将 config drive 视为字典,而它可能是字典或 iso6600 格式,gzip 压缩并 base64 编码。此问题已修复。

  • anaconda 部署接口将与 config drive 相关的命令添加到 kickstart 配置文件末尾。这意味着这些命令在向 Conductor 发送指示节点已配置并准备好重新启动的 ironic API 请求之后处理。这意味着这些命令完成之前节点被关闭存在潜在的竞争条件。添加了一个同步操作,以确保在发送 API 请求之前,所有修改都已写入磁盘——作为最后一步。

  • 用户数据内容中错误地添加了额外的换行符(’n’)。这破坏了 content-type 解码,cloud-init 无法处理它们。这些额外的换行符已被删除。

  • 修复了 anaconda 部署接口的逻辑。如果 ironic 节点的 instance_info 没有同时指定 ‘stage2’ 和 ‘ks_template’,我们就根本没有使用 instance_info。现在已修复,如果指定了 instance_info,则使用它。否则,‘stage2’ 将从镜像的属性中获取(假设在那里设置)。‘ks_template’ 值如果镜像属性中指定了,则从镜像属性中获取(因为它是可选的);否则,我们使用配置设置 ‘[anaconda] default_ks_template’。

  • 对于 anaconda 部署接口,stage2 目录不正确地使用 stage2 文件的完整路径创建;此问题已修复。

  • anaconda 部署接口期望节点的 instance_info 填充 ‘image_url’;现在通过 PXEAnacondaDeploy 的 prepare() 方法填充了它。

  • 对于 anaconda 部署接口,当部署完成并且 bm 节点正在重新启动时,节点的配置状态不正确地设置为 ‘active’——配置状态机机制现在处理该问题。

  • 对于 anaconda 部署接口,用于验证 kickstart 文件的代码不正确并导致错误;此问题已得到解决。

  • 对于 anaconda 部署接口,打包的 ‘ks.cfg.template’ 文件中的 ‘%traceback’ 部分已被弃用并导致验证失败,因此已将其删除。

  • anaconda 部署接口将内部信息保存在节点的 instance_info 中,在用户可见的 ‘stage2’ 和 ‘ks_template’ 字段中。这破坏了使用图像属性中指定的不同图像进行重建。已通过将信息保存在节点的 driver_internal_info 中来修复此问题。

  • 修复了以下集合的分页

    /v1/allocations
    /v1/chassis
    /v1/conductors
    /v1/deploy_templates
    /v1/nodes/{node}/history
    

    next 链接现在包含有效的 URL。

  • 修复了在快速跟踪模式下使用 redfish-virtual-media 启动接口更改 BIOS 设置后重启到代理的问题。以前,未配置 ISO。

  • 修复了 redfishidrac-redfish RAID create_configurationapply_configurationdelete_configuration 清理和部署步骤,以在步骤结束时更新节点的 raid_config 字段。

  • 修复了 redfish 硬件类型中失败的 RAID 配置任务的确定。在此修复之前,失败的任务被报告为成功。

  • 修复了 redfish 硬件类型 RAID 设备创建和删除问题,当在需要重新启动且不允许在 RAID 控制器上运行多个任务的 RAID 控制器上创建或删除多个逻辑磁盘时出现问题。在此修复之前,第二个逻辑磁盘将无法创建或删除。通过此更改,现在可以在 iDRAC 系统上使用 redfish raid 接口。

  • 修复了 redfish-virtual-media boot 接口,允许它与 iDRAC 固件从 6.00.00.00(2022 年 6 月发布)一起使用,因为它修复了阻止 iDRAC 固件在使用 redfish-virtual-media 之前工作的虚拟媒体启动问题。如果尚未完成,请考虑升级 iDRAC 固件,否则在使用 redfish-virtual-media 时仍然会收到错误。

  • 修复了使用 iPXE 从 Swift/RadosGW 直接启动 ramdisk 时 initrd 内核参数的问题。 以前它总是 deploy_ramdisk,即使实际文件名不同。

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

  • 通过提供正确的模式版本(当前为 Draft-07)修复了与 jsonschema 包版本 4.0.0 或更高版本兼容性的问题。

  • 图像缓存现在尊重 HTTP(s) 图像的 Cache-Control: no-store 标头。

  • 文件图像不再缓存在图像缓存中,以避免不必要的磁盘空间占用。

18.2.1

错误修复

  • 不再验证采用使用本地启动的节点时的启动接口参数。

  • 通过设置适当的上限约束来修复使用 sushy 库安装和单元测试 ironic 的问题。此版本的 Ironic 与 Sushy 4.0.0 不兼容。

  • 修复了 anaconda 部署接口中渲染默认 kickstart 模板时找不到 ‘ks_options’ 键的错误。

  • 修复了 PXEAnacondaDeploy 接口的 deploy() 方法未返回 states.DEPLOYWAIT,导致实例直接进入 ‘active’ 而不是 ‘wait call-back’ 的问题。

  • 修复了 anaconda 部署接口错误地期望图像上的 ‘squashfs_id’ 而不是 ‘stage2_id’ 属性的问题。

  • 修复了默认 kickstart 模板 ks.cfg.template 中的心跳机制,因为心跳 API 仅接受 ‘POST’ 并且需要强制性的 ‘callback_url’ 参数。

  • 修复了 anaconda 部署接口中 tarball 图像处理的问题。允许用户指定的扩展名附加到磁盘镜像符号链接。用户现在可以通过在 OS 镜像上设置 ‘disk_file_extension’ 属性来设置文件扩展名。这使用户能够使用 anaconda 部署接口部署 tarball。

  • 修复了在使用 anaconda 部署接口时不支持自动清理的问题。

  • 修复了一个问题,Networking 服务收到重复的额外 DHCP 选项,导致 Networking 服务出错,节点配置失败。请参阅 bug:2009774

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

  • 修复了在 IPv6 路由提供商网络上配置/清理失败的问题。请参阅 bug:2009773

  • 修复了 redfish 硬件类型 update_firmware 清理步骤的输入参数 firmware_images 的验证。现在它在清理步骤开始时验证该参数。在此修复之前,问题是在执行固件更新时确定,或者根本没有确定(例如,拼写可选字段 ‘wait’)。

  • 修复了 redfish 硬件类型 update_firmware 清理步骤,使其与 Sushy 版本 4.0.0 或更高版本兼容。

  • 修复了一个问题,由于节点分页在 max_limit 处中断,导致客户端收到 404 错误,原因是 resource_url 未初始化。

  • 修复了一个问题,由于端口和端口组分页在 max_limit 处中断,导致客户端收到 404 错误,原因是 resource_url 未初始化。

  • 修复了图像缓存代码中,当 URL 包含较长的查询字符串时出现的 File name too long 问题。

  • 当其中一个 NIC 报告无效的 MAC 地址(例如 WWN)时,检查不再失败。

  • 修复了通过 irmc 硬件类型管理的节点 RAID 配置状态获取时,fgi_status 的值没有正确更新,导致重复的恢复清理的错误。

  • 在 iRMC 机器上配置 RAID 时,在创建 RAID 时未设置轮询。创建 RAID 后,设置轮询将通知 ironic 等待 RAID 配置完成,然后再进行下一步,而不是检查 IPA。

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

  • 由于与 SuperMicro X12 机器不兼容,从虚拟媒体图像 URL 中删除 ?filename=file.iso 后缀。这些机器不允许 URL 中包含特殊字符,例如 =?。 历史上,正在添加此后缀是为了提高与需要 swift 作为图像存储时在 URL 中需要 .iso 后缀的 BMC 的兼容性。旧行为将保留给 swift 备份的图像。

18.2.0

序言

Ironic 团队在此宣布发布 Ironic 18.2。

在 Xena 开发周期中,三十八位贡献者共同协作,与我们的相邻社区合作,以支持我们的最终用户在各种形式上的需求。修改了超过 48,000 行代码,并且有二十二个新功能被添加到 Ironic 中,以及一些错误修复。我们真诚地希望您喜欢!

新特性

  • 添加了对驱动程序 API 中字段选择器的支持。请参阅 story 1674775

    • GET /v1/drivers?fields=...

    • GET /v1/drivers/{driver_name}?fields=...

  • 添加了 API 版本 1.78,它提供了检索节点历史事件的能力,这些事件可能是在节点管理过程中记录的,这可能有助于故障排除或识别特定节点或配置中的问题区域。

  • 添加了一种能力,可以将 bootloader 复制到配置的网络启动路径中。可以通过使用 [pxe]loader_file_paths 设置为键值对列表来选择此能力。

    [pxe]
    loader_file_paths = bootx64.efi:/path/to/shimx64.efi,grubx64.efi:/path/to/grubx64.efi
    
  • 添加了手动清理步骤 clear_ca_certificates 以从 iLO 中删除 CA 证书。

  • 添加了更改节点启动模式和安全启动状态的端点。

    • PUT /v1/nodes/{node_ident}/states/boot_mode

    • PUT /v1/nodes/{node_ident}/states/secure_boot

    API 将在验证请求并接受处理后以 202(已接受)响应。更改以异步方式在后台任务中发生。然后,用户可以轮询状态端点 /v1/nodes/{node_ident}/states 以观察请求更改的当前状态。

  • 允许限制缓存图像(当前是实例和 TFTP 图像)的并行下载数量。

  • 添加了对通过 redfish vendor passthru 创建订阅时指定 HttpHeaders 的支持。

升级说明

  • parallel_image_downloads 选项现在默认设置为 True。使用新的 image_download_concurrency 选项来调整行为,默认并发量为 20。

  • ramdiskanaconda 部署接口中的带内清理已修复。如果您依赖于实际的清理步骤不运行,则需要为相关节点禁用清理。

    baremetal node set <node> --no-automated-clean
    

弃用说明

  • Ironic 之前宣布 [deploy]default_boot_mode 的默认值将在“未来版本”中更改。这在 Stein 开发周期中宣布。Ironic 将在 Yoga 开发周期中将此默认值更改为 uefi

  • parallel_image_downloads 选项已被弃用,以支持新的 image_download_concurrency 选项,该选项允许更精确的调整。

错误修复

  • 修复了 ramdisk 部署中自定义内核参数在检查和清理期间未使用的回归。

  • 解决了 [conductor]clean_step_priority_override 值应用过晚的问题,在禁用步骤已被过滤掉之后。通过此更改,优先级覆盖在过滤掉禁用步骤之前应用,以便可以使用此配置选项来启用或禁用步骤(特别是清理步骤),以及更改它们运行的优先级。

  • create_subscription 的验证现在使用 Redfish 的默认值作为 ContextProtocol,以避免 Nonecreate_subscriptionget_subscription 返回的字段现在由供应商之间的公共字段过滤。删除不存在的订阅将返回 404 而不是 500。

  • 修复了数据库模式版本测试中的问题,其中具有初始版本的对象(例如“1.0”)允许在执行数据库的预升级兼容性检查时,其 DB 表并不总是预先存在。这允许升级继续并更新数据库模式,而无需维护显式已知列表。

  • 处理执行状态升级检查时过长的错误,并简单地指示表是否缺失,建议在继续之前更新数据库模式。

  • 修复了 idrac-redfish 清理/部署步骤 import_configuration 中,部分成功的作业被视为完全成功的错误。现在,完成时出现错误的此类作业被视为失败。

  • 修复 idrac-redfish 清理/部署步骤 import_configuration,以处理 iDRAC 在 Ironic 检查任务状态之前删除的已完成的导入配置任务。 之前的 iDRAC 固件版本 5.00.00.00 在 iDRAC Redfish 中完成任务后 1 分钟内将其删除。 这并不总是足以在默认每分钟运行的定期检查中检查其状态。 在此修复之前,节点会永久停留在等待模式。 此问题现已通过错误信息修复,提示降低定期检查间隔或(如果尚未完成)升级 iDRAC 固件。

  • 修复 idrac-redfish RAID 接口 delete_configuration 清理/部署步骤,适用于具有外部物理磁盘的控制器。 现在,在删除虚拟磁盘后会清除外部配置。

  • 修复 idrac-redfish RAID 接口在 create_configuration 清理步骤和 apply_configuration 部署步骤中,当存在非 RAID 模式驱动器时的问题。 通过此修复,在创建虚拟磁盘之前,非 RAID 驱动器将被转换为 RAID 模式。

  • 修复 idrac-wsman BIOS 和 RAID 接口步骤,以正确检查完成时出现错误的 iDRAC 作业的状态。 现在,这些作业被视为失败。 在此修复之前,节点会停留在等待状态,因为它仅检查“已完成”或“失败”的作业状态,而没有检查“完成时出现错误”。

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

  • 当使用 http(s):// 镜像时,如果 HTTP 服务器未提供最后修改日期和时间,则缓存的镜像副本将始终更新。 之前,缓存的镜像会被认为是最新的,如果镜像是在运行时生成的或在提供服务时被修改,则可能导致无效行为。

  • 修复了周期性任务的执行模式,使得大多数驱动程序现在会在创建节点任务之前提前评估是否需要执行工作。 根据各个驱动程序的查询模式,这可以防止每次任务执行时触发过多的数据库查询。

  • 修复了 ramdiskanaconda 部署接口的带内清理。 之前,没有从 ramdisk 获取带内步骤。

  • 重试连接到代理时的 ssl.SSLError

其他说明

  • 从 dbsync 实用程序中删除了一个内部 NEW_MODELS 列表,该列表有助于该工具浏览新模型,但从未被使用过。 相反,该工具现在利用数据库版本和适当的基础版本来做出适当的预升级检查决策。

  • 清理代码已从 AgentDeployMixin 移动到 AgentBaseMixin。 大多数第三方部署接口都需要同时包含两者。