Baremetal Compute Node Management

在注册新硬件或执行维护时,能够同时管理许多裸机计算节点可能很有用。

在所有情况下,命令都会委托给一个控制器主机执行,并并发执行。请注意,ansible 的 forks 配置选项,默认值为 5,可能会限制并发配置的节点数量。

默认情况下,这些命令会等待每个节点的 state transition 完成。可以通过覆盖变量 baremetal_compute_wait 通过 -e baremetal_compute_wait=False 来更改此行为

注册

这是一个实验性工作流,作为通过 inspection 注册节点的替代方案。如果 Kayobe inventory 中定义了裸机计算节点,则可以通过 Kayobe 在 Ironic 中注册它们。以下是 group r1 的示例 hosts 文件

[r1]
hv100 ipmi_address=1.2.3.4
...

[baremetal-compute:children]
r1

您还应该为该 group 定义一个 group_vars 文件,其中包含 Ironic 变量,这可以在 etc/kayobe/inventory/group_vars/r1/ironic_vars 或您正在使用的环境中完成。

ironic_driver: redfish

ironic_driver_info:
  redfish_system_id: "{{ ironic_redfish_system_id }}"
  redfish_address: "{{ ironic_redfish_address }}"
  redfish_username: "{{ ironic_redfish_username }}"
  redfish_password: "{{ ironic_redfish_password }}"
  redfish_verify_ca: "{{ ironic_redfish_verify_ca }}"
  ipmi_address: "{{ ipmi_address }}"

ironic_properties:
  capabilities: "{{ ironic_capabilities }}"

ironic_resource_class: "example_resource_class"
ironic_redfish_system_id: "/redfish/v1/Systems/System.Embedded.1"
ironic_redfish_verify_ca: "{{ inspector_rule_var_redfish_verify_ca }}"
ironic_redfish_address: "{{ ipmi_address }}"
ironic_redfish_username: "{{ inspector_redfish_username }}"
ironic_redfish_password: "{{ inspector_redfish_password }}"
ironic_capabilities: "boot_option:local,boot_mode:uefi"

Ironic 用户名和密码必须与节点的 BMC 用户名和密码匹配。如果整个 group 的用户名和密码组合不相同,则需要相应地调整您的配置。IPMI 地址也应与节点的 BMC 地址匹配。

完成此操作后,您可以开始注册 Ironic 节点

(kayobe) $ kayobe baremetal compute register

Inspector 不用于发现节点,并且在注册时不会进行节点 inspection,节点将自动进入 manageable 状态。要进行 inspection,您应该在注册后使用 kayobe baremetal compute inspect

管理

可能需要将节点设置为 manageable provision 状态,以便执行某些管理操作,或者在注册的节点投入使用时。为了管理一个节点,它必须处于以下状态之一:enrollavailablecleaningclean failedadopt failedinspect failed。要将裸机计算节点移动到 manageable provision 状态

(kayobe) $ kayobe baremetal compute manage

提供

为了使 nova 能够调度节点,它们必须是 available。要将裸机计算节点从 manageable 状态移动到 available provision 状态

(kayobe) $ kayobe baremetal compute provide

检查

节点必须处于以下状态之一:manageableinspect failedavailable。要触发裸机计算节点的硬件 inspection

(kayobe) $ kayobe baremetal compute inspect

保存硬件 introspection 数据

Introspection 数据将存储在 nginx 服务内的 inspection_store 容器中。此数据可以保存到控制主机

(kayobe) $ kayobe baremetal compute introspection data save

--output-dir 可用于指定保存 introspection 数据文件的目录。 --output-format 可用于设置文件的格式。

重命名

一旦发现节点,将它们与一个名称关联以使其更易于使用会很有帮助。如果您希望节点根据其 inventory 主机名命名,可以运行以下命令

(kayobe) $ kayobe baremetal compute rename

此命令将使用 inventory 中的 ipmi_address 主机变量,将 inventory 主机名映射到正确的节点。

更新 Deployment Image

当 overcloud deployment images 重新构建或以下变量发生更改时

  • ipa_kernel_upstream_url

  • ipa_ramdisk_upstream_url

无论是更改 url,还是指向的 image 发生更改,您都需要更新 Ironic 节点上的 deploy_ramdiskdeploy_kernel 属性。为此,您可以运行

(kayobe) $ kayobe baremetal compute update deployment image

您可以选择通过设置 baremetal-compute-limit 来限制受此影响的节点

(kayobe) $ kayobe baremetal compute update deployment image --baremetal-compute-limit sand-6-1

它应该采用 ansible 主机模式 的形式。这将与 Ironic 节点名称匹配。

Ironic Serial Console

要从 Horizon 访问裸机节点,您需要启用 serial console。为此,您必须在 etc/kayobe/kolla.yml 中将 kolla_enable_nova_serialconsole_proxy 设置为 true

kolla_enable_nova_serialconsole_proxy: true

Ironic 节点上的 console 接口预计为 ipmitool-socat,您可以使用以下命令进行检查

openstack baremetal node show <node_id> --fields console_interface

其中 <node_id> 应为要检查的 Ironic 节点的 UUID 或名称。

如果您在 etc/kayobe/ironic.yml 中设置了 kolla_ironic_enabled_console_interfaces,它应在已启用的接口列表中包含 ipmitool-socat

启用 serial console 的 playbook 目前仅在 Ironic 节点名称与 inventory 主机名匹配时才有效。

满足这些要求后,您可以运行

(kayobe) $ kayobe baremetal compute serial console enable

这将为每个节点保留一个 TCP 端口,用于 serial console 接口。分配存储在 ${KAYOBE_CONFIG_PATH}/console-allocation.yml 中。当前实现使用全局池,由 ironic_serial_console_tcp_pool_startironic_serial_console_tcp_pool_end 指定;这些变量可以在 etc/kayobe/ironic.yml 中设置。

要禁用 serial console,您可以使用

(kayobe) $ kayobe baremetal compute serial console disable

为每个节点分配的端口将被保留,如果希望使用不同的名称将其分配给另一个 Ironic 节点,则必须手动从 ${KAYOBE_CONFIG_PATH}/console-allocation.yml 中删除。

您可以选择通过设置 baremetal-compute-limit 来限制目标节点

(kayobe) $ kayobe baremetal compute serial console enable --baremetal-compute-limit sand-6-1

它应该采用 ansible 主机模式 的形式。

Serial console 自动启用

要在 kayobe overcloud post configure 上自动启用 serial consoles,您可以在 etc/kayobe/ironic.yml 中设置 ironic_serial_console_autoenable

ironic_serial_console_autoenable: true