从 ironic-inspector 迁移¶
本文档概述了从独立的 ironic-inspector 服务迁移到内置的 带内检查 的过程。
注意
这是一份实时文档,随着 ironic-inspector 的更多功能在 ironic 中得到支持而更新。如果您正在升级到 master 分支以外的分支,请使用目标分支的本文档版本。
了解功能差异¶
已移除¶
一些很少使用或有争议的功能尚未迁移到 ironic。当前列表包括
节点自动发现 不再基于插件。
对处于
active置备状态的节点进行内省。基于
iptables的 PXE 过滤器。某些客户端命令在 ironicclient 中不可用,例如,那些 显示来自 LLDP 数据的网络接口信息 的命令。
检查规则 已于 2025.1 “Epoxy” 版本中实现。
新的默认值¶
默认使用数据库
data storage backend。default hooks列表仅限于最常用的钩子(请参阅 内置钩子)。
内置钩子¶
大多数 内省钩子 已 迁移到 ironic,尽管许多钩子已迁移以提高清晰度和一致性。
Inspector |
ironic |
|
说明 |
|---|---|---|---|
|
|
否 |
|
|
|
否 |
拆分为两个逻辑部分。 |
|
|
否 |
python-hardware 已不再积极维护。 |
|
|
否 |
|
|
|
否 |
|
|
|
否 |
|
|
|
否 |
|
|
|
否 |
|
|
|
否 |
|
|
|
是 |
|
|
|
仅 |
拆分,删除了 |
|
|
是 |
拆分为两个逻辑部分。 |
自定义钩子¶
自定义钩子(在 ironic-inspector 中称为 *处理钩子*)必须从基类 InspectionHook 派生。它与旧的 ProcessingHook 在几个重要方面不同,需要调整自定义钩子以适应 ironic
钩子在常规
task上运行,而不是 ironic-inspector 特定的NodeInfo对象。由于对节点和端口的更改不再需要 API 调用,钩子预计会立即提交其更改,而不是让它们在任务对象上累积。
钩子方法已重命名:
before_processing被调用preprocess,__call__方法代替before_update。内省数据 已拆分为其 库存 部分和 插件数据。钩子不应更新库存。
新的钩子使用入口点
ironic.inspection.hooks代替ironic_inspector.hooks.processing。
其他注意事项¶
没有自动迁移检查数据的方法。您需要重复检查或手动复制数据。
迁移过程¶
确保您正在运行 ironic 2024.1 或更高版本。
如 带内检查 中所述,启用新的检查实现。
仔细研究
inventory和inspector部分中的选项。更新选项以匹配 ironic-inspector 配置中的类似选项。启用所需的 内置钩子,并考虑到新的名称和组成。
如果使用网络启动和 *未管理* 检查或自动发现,配置未管理的启动。
如果使用 OpenStack Networking,请考虑配置(但尚未启动)PXE 过滤器服务。
确保没有正在运行的检查。
停止 ironic-inspector 或至少禁用其 PXE 过滤器(它可能会与此处使用的过滤器冲突)。
如果需要,启动 PXE 过滤器服务。重新启动 Bare Metal 服务。
更改所有节点以使用新的检查接口,例如
baremetal node list --fields uuid inspect_interface -f value | while read uuid iface; do if [ "$iface" = "inspector" ]; then baremetal node set --inspect-interface agent "$uuid" fi done
确保您的脚本使用 ironicclient 和 OpenStackSDK 中的 Bare Metal API,而不是特定于 ironic-inspector 的客户端 API。