Wallaby 系列 (6.5.0 - 7.0.x) 发行说明

7.1.0-7

安全问题

  • Ironic-Python-Agent 2023.1 版本之前的版本容易受到 CVE-2024-44082 的影响,该漏洞在 bug 2071740 <https://bugs.launchpad.net/bugs/2071740>_ 中跟踪。使用 Ironic Zed 版本或更早版本的部署者必须将 CVE-2024-44082 的修复程序应用于其 Ironic 环境,并保持 (所有 Zed 版本及更早版本的默认设置) [conductor]/conductor_always_validates_images 设置为 True。 这可确保 conductor 将进行安全检查,因为 Ironic-Python-Agent 不会进行检查。

错误修复

  • 修复了使用 efibootmgr 处理 UEFI NVRAM 记录的问题,以便我们可以接受并处理 UTF-16 编码的数据,这是 UEFI NVRAM 中记录的预期编码方式。

  • 修复了 UEFI NVRAM 记录的处理,以允许响应中出现意外字符,从而使 Ironic 不会发生致命错误。

  • 修复了或至少减轻了运行中的 Ironic agent 在节点被锁定时,对 Ironic 部署进行大量查找请求的情况。特别是,这是因为查找还会驱动 agent token 的生成,这需要 conductor 分配一个 worker,生成 token,并将结果返回给 API 客户端。Ironic 的重试逻辑现在将等待最多 60 秒,如果收到 HTTP Conflict (409) 消息,agent 将自动暂停查找操作 30 秒,而不是继续尝试查找,这可能会不必要地给 Ironic 部署增加更多工作。

7.1.0

错误修复

  • 修复了 UEFI 重复条目清理中正则表达式的一个小问题,该问题是在先前更改中引入的,目的是重构清理操作,以避免 UEFI 固件将删除条目后的操作视为无效操作。

  • 修复了 UEFI 固件 NVRAM 启动条目表中可能找不到重复条目的情况,方法是显式查找并删除匹配的标签,然后再创建 EFI 启动加载程序条目。

  • 如果用于 bootloader hint 的 CSV 文件没有 BOM,我们将无法将其内容作为 utf-16 编解码器读取,因为该编解码器过于通用。回退到 utf-16-le,因为小端模式通常使用。

  • 修复了在 EFI 分区位于 devicemapper 设备上时配置 UEFI boot 的问题。

  • 修复了 GenericHardwareManager,以便在存在绑定接口时查找网络信息。

  • 修复了软件 RAID 创建上的竞争条件:由于分区的创建是异步的,我们需要等待所有 udev 事件处理完毕,然后才能使用这些分区创建 md 设备。

  • 修复了一个分区不可见的问题,原因是分区表重读调用的不正确。

  • 修复了一个分区不可见的问题,原因是 RAID 配置创建期间分区表重读调用的不正确。

  • 修复了软件 RAID 设备发现的处理,以防止 RAID 设备的 NamesEvents 字段值无意中导致命令返回意外输出。 之前这可能会导致在处理 UEFI 分区时出现部署问题。

  • 修复了当 EFI 分区 UUID 未设置且尝试编辑 /etc/fstab 时出现的问题。

  • 修复了处理分区 UUID 而不是分区返回的分区 UUID 的问题,当操作系统可能无法及时返回分区 UUID 时会出现此问题。 这两个字段通常分别称为 PARTUUID 和 UUID。 这种问题通常在重 IO 负载下出现。 现在我们扫描并识别我们识别的“UUID”,并相应地更新 Linux fstab 条目。 有关更多信息,请参阅 story #2009881

  • 最近发布的 redhat grub2 在安装到 EFI 路径时总是会失败,以鼓励过渡到签名的 shim bootloader。 分区镜像部署避免使用 preserve-efi-assets 函数调用 grub2-install。 部署整个磁盘镜像不需要 grub2-install。 这留下了安装到 softraid 设备的整个磁盘镜像,仍然调用 grub2-install。 在这种剩余情况下,仍然尝试运行 grub2-install,但任何失败现在都会被忽略。

  • 修复了使用 Active/Passive 存储阵列时处理 Multipath IO 设备的故障。 之前,“待机”路径可能会导致 IO 错误导致清理终止。 agent 现在显式尝试处理和考虑基于 MPIO 可用数据的多路径。 这需要 multipathmultipathd 工具存在于 ramdisk 中。 这些由 device-mapper-multipathmultipath-tools 包提供,并且 agent 的使用不需要它们。

  • 修复了执行清理时 Active/Active MPIO 设备的非理想行为,最终将每个 IO 路径清理一次,而不是每个后端设备清理一次。

  • 修复了发现 devicemapper 设备的 WWN/序列号的问题。

其他说明

  • 如果存在工具,agent 现在将尝试收集任何多路径路径信息并将其上传到 agent ramdisk。

7.0.2

新特性

  • 发送到 conductor 的心跳在它们被计划或请求的五秒钟内进行分组,以避免快速连续地发送它们。

  • 添加了代理读取和处理启动加载程序 CSV 文件的功能,这些文件作为权威指标,指示要加载的启动加载程序,而不是倾向于使用默认启动加载程序。

已知问题

  • 如果 EFI 文件系统上存在多个启动加载程序 CSV 文件,则将使用发现的第一个 CSV 文件。Ironic 团队认为多个文件是正在部署的镜像中的缺陷。这可能会在未来更改。

错误修复

  • 修复了软件 RAID 上 bootloader 安装的问题,方法是检查 ESP 是否已经挂载。

  • 修复了快速连续的心跳暴露在 conductor 的 RPC 处理中的竞争条件的问题。

  • 修复了从容器内部关机或重启节点时回退到 sysrq 的问题。

  • 修复了基于 UEFI 的部署中,使用分区镜像时 NVMe 设备之前失败的问题,原因是设备名称模式不同。

  • 修复了 IPA 启动时通过 chronyd 进行 NTP 时间同步不立即生效的问题(这可能会破坏 TLS 证书生成等时间敏感组件)。

  • 修复了由于内存限制导致磁盘镜像转换过程中出现内存分配或输入/输出错误的问题,方法是限制可用内存分配池的数量到一个合理的非动态数量,该数量不应超过可用系统内存。

  • CentOS 8.4 和 8.5 上的 lshw 包版本 B.02.19.2-5 包含一个 bug,该 bug 阻止报告单个内存条的大小,导致某些地方报告的总内存大小为 0。现在,当可用时,总内存大小将从 lshw 的总内存大小输出中获取(该输出不受相同问题的影响)。

  • 镜像先前断开连接的 UEFI 系统分区 (ESP) 在 UEFI 软件 RAID 设置中。 断开连接的 ESP 可能会导致节点使用过时的内核参数启动,或者 UEFI 固件找不到可引导的内核。

  • 修复了部署完成后节点失败的问题,原因是 Grub2 EFI 加载程序条目添加中的问题,其中 BOOT.CSV 文件提供了指向要用于启动操作系统的启动加载程序的权威指针。Grub2 的基本问题是,它会使用供应商特定的 BOOT.CSVBOOTX64.CSV 文件更新 UEFI 启动加载程序 NVRAM 条目。在某些情况下,裸机可能会在此过程中崩溃。有关更多信息,请参阅 story 2008962

7.0.1

错误修复

  • 修复了在加载配置之前进行初始日志记录,以重新记录为故障排除目的记录的任何内容。 这是必要的,因为 systemd 不会将进程启动的 stdout 作为进程的日志报告。

  • 如果无法确定其中一个网络接口的 MAC 地址,则不再崩溃。

  • 在 write_image.sh 中添加了对“udevadm settle”的调用。 在 GPT 和 MBR 被销毁后,systemd-udevd 会被触发,这可能会打开 /dev/sda,从而阻止 qemu-img 写入其镜像。

7.0.0

新功能

  • 为 IPA 添加了对 NVMe 特定存储清理的支持。 目前,这是通过使用 nvme-cli format 功能来实现的。 如果设备支持,则使用 Crypto Erase,否则代码回退到 User Data Erase。 操作员可以通过使用 deploy.enable_nvme_erase 配置选项来控制 NVMe 清理,该选项控制 driver_internal_info 中的 agent_enable_nvme_erase 内部设置。

  • 添加了一个新的部署步骤 deploy.inject_files,以将任意文件注入到实例中。 有关详细信息,请参阅 硬件管理器文档

已知问题

  • 虚拟介质设备验证的逻辑现在更加严格,可能并非在所有情况下都有效。 如果您发现任何情况,请通过 Storyboard 将带有附加虚拟介质设备的 lsblk -P -O 的输出提供给 Ironic 开发社区。

  • 现在,从虚拟介质复制配置数据需要将 boot_method=vmedia 标志设置为 bootloader 的内核命令行。 制作自定义 boot ISO 的操作员应确保在任何自定义构建过程中添加了适当的命令行。

升级说明

  • 不再可以启用所谓的独立模式,在这种模式下,agent 不与 ironic 通信。 这种模式仅适用于本地测试,在生产环境中启用它总是错误的。 ironic 团队不支持在正常工作流程之外将 ironic-python-agent 用作独立应用程序。

安全问题

  • 解决了一个潜在的向量,恶意攻击者可以通过在某些有限情况下留在磁盘上的数据来利用该向量,从而使 ironic-python-agent 的 API 受到攻击,或者可能破坏清理过程以防止机器返回到可用池。 有关更多信息,请参阅 story 2008749

错误修复

  • 添加了对虚拟介质设备的验证,以防止系统上的现有分区被视为 IPA 配置数据的潜在来源。

  • 添加了对从虚拟介质加载配置的检查,以确保仅在机器从虚拟介质启动时才发生加载。

  • IPA 现在将成功清理配置,当它遇到先前使用整个设备而不是分区创建的软件 RAID 阵列时。

  • IPA 现在正确检查根分区是否已经挂载。 有关详细信息,请参阅 Story 2008631

  • 修复了元数据擦除清理在分区失败的问题,因为找不到只读文件,而该文件在基本设备上可用。 添加了在失败时检查基本设备文件的功能。 有关详细信息,请参阅 story 2008696

  • 修复了在流式传输原始分区镜像后不正确的根分区 UUID。

  • qemu-img convert 命令的内存使用量限制增加到 2 GiB。有关详细信息,请参阅 Story 2008667