Node servicing¶
概述¶
为了更好地使操作员能够修改现有节点,Ironic 引入了节点服务模型,您可以使用类似于部署步骤或通过 Cleaning 子系统进行手动清理的步骤,将处于 active 状态的节点进行操作。
有关清理的更多信息,请参阅 节点清理。
主要区别¶
服务步骤不包含自动执行模型,这是标准部署和“自动化”清理工作流程固有的。这可能会在未来的某个时候发生变化。
这也意味着,虽然可以提供优先级值,但目前未使用它。
与清理和部署的相似之处¶
与 Clean 和 Deploy 步骤类似,在调用时,操作员可以通过查看 driver_internal_info 字段来验证当前正在运行的步骤,查找 service_steps 字段。当前正在执行的步骤可以使用裸机节点的 service_step 字段查看,该字段是顶层字段。
服务步骤在驱动程序接口方法上使用装饰器进行内部装饰。这意味着服务步骤不会自动公开可以在任何时候执行的 clean 和 deploy 步骤。Ironic 开发团队对装饰的方法采取了谨慎和有意的做法。此外,某些清理和部署步骤明确针对在特定模式下运行而设计,不适合在原始工作流程之外触发。
可用步骤¶
执行服务步骤¶
为了使手动清理正常工作,您可能需要配置一个 服务网络。
通过 API 启动手动服务¶
仅当节点处于 active 置备状态时,才能执行服务。从 API 版本 1.87 及更高版本开始,启动它的 REST API 请求可用
PUT /v1/nodes/<node_ident>/states/provision
(更多信息请参见 此处。)
此 API 允许操作员通过 ‘target’: ‘service’ 将节点直接从 active 置备状态置于 servicing 置备状态。PUT 还会要求指定 ‘service_steps’ 参数。这是一个有序的步骤列表。一个步骤由字典 (JSON) 表示,形式如下
{
"interface": "<interface>",
"step": "<name of step>",
"args": {"<arg1>": "<value1>", ..., "<argn>": <valuen>}
}
对于所有步骤,‘interface’ 和 ‘step’ 键是必需的。如果服务步骤方法接受关键字参数,则可以指定 ‘args’ 键。它是一个关键字变量参数的字典,每个关键字参数条目为 <name>: <value>。
如果任何步骤缺少必需的关键字参数,则不会执行服务,并且节点将置于 service failed 置备状态,并显示适当的错误消息。
如果在服务过程中,服务步骤确定关键字参数不正确,则将执行所有先前的步骤,然后将节点置于 service failed 置备状态,并显示适当的错误消息。
此 API 请求体的示例
{
"target":"service",
"sevice_steps": [{
"interface": "raid",
"step": "apply_configuration",
"args": {"create_nonroot_volumes": True}
},
{
"interface": "vendor",
"step": "send_raw",
"args": {"raw_bytes": "0x00 0x00 0x00 0x00"}
}]
}
在上面的示例中,节点的 RAID 接口将应用设置的 RAID 配置,然后将调用供应商接口的 send_raw 步骤,以将原始命令发送到 BMC。请注意,send_raw 仅适用于 ipmi 硬件类型。
或者,您可以指定 runbook 代替 service_steps
{
"target":"service",
"runbook": "<runbook_name_or_uuid>"
}
指定的 runbook 必须与节点的某个特性匹配才能使用。
通过“openstack baremetal” CLI 启动服务¶
从 Bare Metal API 版本 1.87 开始,服务可通过 baremetal node service 命令使用。
必须指定 --service-steps 参数。它的值是以下之一
JSON 字符串
指向 JSON 文件的路径,其内容传递给 API
‘-’,从 stdin 读取。这允许将服务步骤管道输入。在 Unix 实用程序中使用 ‘-’ 表示 stdin 很常见。
使用 JSON 字符串执行此操作的示例
baremetal node service <node> \
--service-steps '[{"interface": "deploy", "step": "example_task"}]'
或使用文件
baremetal node service <node> \
--service-steps my-service-steps.txt
或使用 stdin
cat my-clean-steps.txt | baremetal node service <node> \
--service-steps -
使用 Runbook 进行服务¶
与手动清理类似,您可以使用 runbook 进行节点服务。Runbook 通过特性与节点关联,提供预定义的服务步骤列表。
要使用 runbook 进行服务
baremetal node service <node> –runbook <runbook_name_or_uuid>
在使用它进行服务之前,请确保 runbook 与节点的某个特性匹配。有关 runbook API 用法的更多信息,请参阅 清理和服务的 Runbook。
Ironic 中的可用步骤¶
ipmi 硬件类型¶
vendor.send_raw¶
此步骤在 IPMI 驱动程序 文档中介绍,除了部署步骤之外,还可以将其用作服务步骤。
redfish 硬件类型¶
bios.apply_configuration¶
此步骤在 BIOS 配置 配置文档中介绍,因为它最初是作为清理步骤开始的。它是一个标准化的跨接口名称。
management.update_firmware¶
此步骤在 Redfish 驱动程序 中介绍,旨在通过 BMC 促进固件更新。
raid.apply_configuration¶
此步骤在 Redfish 驱动程序 中介绍,旨在促进应用 raid 配置。
raid.delete_configuration¶
此步骤在 Redfish 驱动程序 中介绍,旨在删除配置。
Agent¶
raid.apply_configuration¶
这是 Agent 的标准化 RAID 传递接口,可以像其他 RAID 接口一样利用它。
Ironic-Python-Agent 中的可用步骤¶
注意
一旦 Agent 合并了支持将步骤暴露给 ironic 部署,将填充 Agent 可用的步骤。
服务网络¶
如果您使用的是 Neutron DHCP 提供程序(默认),您还需要确保已配置服务网络。此网络将用于在带内服务操作的 ramdisk 启动。