清理与维护的 Runbook

概述

Runbook 资源代表一系列步骤的集合,这些步骤定义了在节点清理和维护操作期间要执行的一系列操作。Runbook 允许用户以一致、预定义和自动化的方式执行简单和复杂的操作。

如果 Runbook 的名称与节点中的一个特征(trait)匹配,则该 Runbook 将与该节点匹配。因此,可以创建 Runbook 以匹配选定节点的现有特征,或者反之亦然;无论哪种方式,有效的 Runbook 名称必须是唯一的,并遵循特征命名约定,因为这是与节点关联的基础。

因此,Runbook 名称可以是标准名称或自定义名称。标准 Runbook 名称列在 os_traits 库 中。自定义特征必须以 CUSTOM_ 前缀开头,仅包含大写字母 A 到 Z、数字 0 到 9 或下划线,并且长度不得超过 255 个字符。

系统中不能有两个 Runbook 具有相同的名称,因为 Runbook 名称在系统中必须是唯一的。

Runbook 的访问控制

Runbook 实施基于角色的访问控制模型,该模型确定谁可以创建、修改和使用它们

ownerpublic 字段决定了 Runbook 的可访问性

  • 如果 owner 非空(public 自动为 false),则 Runbook 的范围限定为该项目,只能在由该项目拥有或租赁的节点上使用

  • 如果 owner 为空且 public 为 false,则只有系统范围的用户才能访问或使用该 Runbook

  • 如果 owner 为空且 public 为 true,则任何项目都可以在兼容的节点上使用该 Runbook,但只有系统范围的用户才能修改它

注意

有关设计细节和实施细节,请参阅 Runbooks 规范

特征匹配的目的

特征匹配机制充当访问控制,以确保 Runbook 仅在预先批准的节点上执行。

执行 Runbook 时,必须显式指定要运行的 Runbook。目前,没有办法使用单个命令在单个节点上执行多个 Runbook。但是,如果您需要执行多个操作,可以将所有必要步骤包含在一个全面的 Runbook 中。

您可以验证节点是否具有 Runbook 所需的特征

baremetal node trait list <node>

有关如何创建和管理 Runbook 的信息,请参阅 Ironic API 中 Runbook 的参考

有关节点清理和维护操作的更多详细信息,请参阅 节点清理节点维护

示例 Runbook

 baremetal runbook create --name CUSTOM_FIRMWARE_UPGRADE \
   --steps '[
      {
         "interface": "management",
         "step": "reset_bios_to_default",
         "args": {},
         "order": 1
      },
      {
         "interface": "management",
         "step": "update_firmware",
         "args": {
            "firmware_url": "https://example.com/firmware.bin",
            "component": "bios"
         },
         "order": 2
      },
      {
         "interface": "management",
         "step": "reboot",
         "args": {},
         "order": 3
      }
   ]'

The output of the create command would show the complete runbook details::

   +------------+---------------------------------------------------------------------------------------------------------+
   | Field      | Value                                                                                                   |
   +------------+---------------------------------------------------------------------------------------------------------+
   | created_at | 2025-03-12T14:16:26.054115+00:00                                                                        |
   | extra      | {}                                                                                                      |
   | name       | CUSTOM_FIRMWARE_UPGRADE                                                                                 |
   | owner      | None                                                                                                    |
   | public     | False                                                                                                   |
   | steps      | [{'interface': 'management', 'step': 'reset_bios_to_default', 'args': {}, 'order': 1}, {'interface':    |
   |            | 'management', 'step': 'update_firmware', 'args': {'firmware_url': 'https://example.com/firmware.bin',   |
   |            | 'component': 'bios'}, 'order': 2}, {'interface': 'management', 'step': 'reboot', 'args': {}, 'order':   |
   |            | 3}]                                                                                                     |
   | updated_at | None                                                                                                    |
   | uuid       | 160ff684-5216-4874-9a61-775c3a17c892                                                                    |
   +------------+---------------------------------------------------------------------------------------------------------+

清理和维护

创建 Runbook 并通过匹配特征将其与节点关联后,可以在显式清理或维护步骤的位置使用它。

对于清理操作

# Using a runbook name
baremetal node clean --runbook CUSTOM_FIRMWARE_UPGRADE node-0

# Or using a runbook UUID
baremetal node clean --runbook 160ff684-5216-4874-9a61-775c3a17c892 node-0

对于维护操作

# Using a runbook name
baremetal node service --runbook CUSTOM_FIRMWARE_UPGRADE node-0

# Or using a runbook UUID
baremetal node service --runbook 160ff684-5216-4874-9a61-775c3a17c892 node-0

这些命令将按照指定的顺序执行 Runbook 中定义的所有步骤。