清理与维护的 Runbook¶
概述¶
Runbook 资源代表一系列步骤的集合,这些步骤定义了在节点清理和维护操作期间要执行的一系列操作。Runbook 允许用户以一致、预定义和自动化的方式执行简单和复杂的操作。
如果 Runbook 的名称与节点中的一个特征(trait)匹配,则该 Runbook 将与该节点匹配。因此,可以创建 Runbook 以匹配选定节点的现有特征,或者反之亦然;无论哪种方式,有效的 Runbook 名称必须是唯一的,并遵循特征命名约定,因为这是与节点关联的基础。
因此,Runbook 名称可以是标准名称或自定义名称。标准 Runbook 名称列在 os_traits 库 中。自定义特征必须以 CUSTOM_ 前缀开头,仅包含大写字母 A 到 Z、数字 0 到 9 或下划线,并且长度不得超过 255 个字符。
系统中不能有两个 Runbook 具有相同的名称,因为 Runbook 名称在系统中必须是唯一的。
Runbook 的访问控制¶
Runbook 实施基于角色的访问控制模型,该模型确定谁可以创建、修改和使用它们
owner 和 public 字段决定了 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 中定义的所有步骤。