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 状态,以便执行某些管理操作,或者在注册的节点投入使用时。为了管理一个节点,它必须处于以下状态之一:enroll、available、cleaning、clean failed、adopt failed 或 inspect failed。要将裸机计算节点移动到 manageable provision 状态
(kayobe) $ kayobe baremetal compute manage
提供¶
为了使 nova 能够调度节点,它们必须是 available。要将裸机计算节点从 manageable 状态移动到 available provision 状态
(kayobe) $ kayobe baremetal compute provide
检查¶
节点必须处于以下状态之一:manageable、inspect failed 或 available。要触发裸机计算节点的硬件 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_urlipa_ramdisk_upstream_url
无论是更改 url,还是指向的 image 发生更改,您都需要更新 Ironic 节点上的 deploy_ramdisk 和 deploy_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_start 和 ironic_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