从 ironic-inspector 迁移

本文档概述了从独立的 ironic-inspector 服务迁移到内置的 带内检查 的过程。

注意

这是一份实时文档,随着 ironic-inspector 的更多功能在 ironic 中得到支持而更新。如果您正在升级到 master 分支以外的分支,请使用目标分支的本文档版本。

了解功能差异

已移除

一些很少使用或有争议的功能尚未迁移到 ironic。当前列表包括

检查规则 已于 2025.1 “Epoxy” 版本中实现。

新的默认值

内置钩子

大多数 内省钩子迁移到 ironic,尽管许多钩子已迁移以提高清晰度和一致性。

钩子映射

Inspector

ironic

default_hooks?

说明

accelerators

accelerators

capabilities

boot-mode, cpu-capabilities

拆分为两个逻辑部分。

extra_hardware

extra-hardware

python-hardware 已不再积极维护。

lldp_basic

parse-lldp

local_link_connection

local-link-connection

pci_devices

pci-devices

physnet_cidr_map

physical-network

raid_device

raid-device

root_device

root-device

ramdisk_error

ramdisk-error

scheduler

architecture, memory

architecture

拆分,删除了 local_gbvcpus 支持。

validate_interfaces

validate-interfaces, ports

拆分为两个逻辑部分。

自定义钩子

自定义钩子(在 ironic-inspector 中称为 *处理钩子*)必须从基类 InspectionHook 派生。它与旧的 ProcessingHook 在几个重要方面不同,需要调整自定义钩子以适应 ironic

  • 钩子在常规 task 上运行,而不是 ironic-inspector 特定的 NodeInfo 对象。

  • 由于对节点和端口的更改不再需要 API 调用,钩子预计会立即提交其更改,而不是让它们在任务对象上累积。

  • 钩子方法已重命名:before_processing 被调用 preprocess__call__ 方法代替 before_update

  • 内省数据 已拆分为其 库存 部分和 插件数据。钩子不应更新库存。

  • 新的钩子使用入口点 ironic.inspection.hooks 代替 ironic_inspector.hooks.processing

其他注意事项

  • 没有自动迁移检查数据的方法。您需要重复检查或手动复制数据。

迁移过程

  1. 确保您正在运行 ironic 2024.1 或更高版本。

  2. 带内检查 中所述,启用新的检查实现。

  3. 仔细研究 inventoryinspector 部分中的选项。更新选项以匹配 ironic-inspector 配置中的类似选项。

  4. 启用所需的 内置钩子,并考虑到新的名称和组成。

  5. 如果使用网络启动和 *未管理* 检查或自动发现,配置未管理的启动

  6. 如果使用 OpenStack Networking,请考虑配置(但尚未启动)PXE 过滤器服务

  7. 确保没有正在运行的检查。

  8. 停止 ironic-inspector 或至少禁用其 PXE 过滤器(它可能会与此处使用的过滤器冲突)。

  9. 如果需要,启动 PXE 过滤器服务。重新启动 Bare Metal 服务。

  10. 更改所有节点以使用新的检查接口,例如

    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
    
  11. 确保您的脚本使用 ironicclient 和 OpenStackSDK 中的 Bare Metal API,而不是特定于 ironic-inspector 的客户端 API。