8.2. 创建裸机节点硬件的清单

director 需要 Red Hat OpenStack Platform (RHOSP)部署中节点的硬件清单进行配置集标记、基准测试和手动根磁盘分配。

您可以使用以下方法之一向 director 提供硬件清单:

  • 自动:您可以使用 director 的内省过程,从每个节点收集硬件信息。这个过程在每个节点上启动内省代理。内省代理从节点收集硬件数据并将数据送回 director。director 将硬件数据存储在 undercloud 节点上运行的对象存储服务(swift)中。
  • 手动:您可以手动配置每个裸机的基本硬件清单。此清单存储在裸机置备服务(ironic)中,用于管理和部署裸机机器。
注意

如果您的 overcloud 使用 derived _params.yaml,则需要使用 director 的自动内省过程,这需要存在内省数据。如需有关 derived _params.yaml 的更多信息,请参阅 工作流和派生参数

director 自动内省流程比设置裸机置备服务端口的手动方法提供以下优点:

  • 内省记录了硬件信息中的所有连接端口,包括在 nodes.yaml 中尚未配置 PXE 引导的端口。
  • 如果属性可以使用 LLDP 发现,内省会为每个端口设置 local_link_connection 属性。使用手动方法时,您必须在注册节点时为每个端口配置 local_link_connection
  • 在部署 spine-and-leaf 或 DCN 架构时,内省为裸机置备服务端口设置 physical_network 属性。

8.2.1. 使用 director 内省来收集裸机节点硬件信息

将物理机注册为裸机节点后,您可以使用 director 内省自动添加其硬件详情并为每个以太网 MAC 地址创建端口。

提示

作为自动内省的替代选择,您可以手动为 director 提供裸机节点的硬件信息。如需更多信息,请参阅 手动配置裸机节点硬件信息

先决条件

  • 您已为 overcloud 注册了裸机节点。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 运行 pre-introspection 验证组来检查内省要求:

    (undercloud)$ openstack tripleo validator run --group pre-introspection
  4. 查看验证报告的结果。
  5. 可选:查看特定验证的详细输出:

    (undercloud)$ openstack tripleo validator show run --full <validation>
    • &lt;validation> 替换为您要查看报告的特定验证 UUID。

      重要

      FAILED 验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED 验证可能会显示生产环境中潜在的问题。

  6. 检查每个节点的属性。您可以检查所有节点的硬件属性或特定节点:

    • 检查所有节点的硬件属性:

      (undercloud)$ openstack overcloud node introspect --all-manageable --provide
      • 使用 --all-manageable 选项仅内省处于受管理状态的节点。在此示例中,所有节点都处于受管理状态。
      • 使用 --provide 选项在内省后将所有节点重置为 available 状态。
    • 检查特定节点的硬件属性:

      (undercloud)$ openstack overcloud node introspect --provide <node1> [node2] [noden]
      • 使用 --provide 选项,在内省后将所有指定节点重置为 available 状态。
      • <node1>, [node2], 及所有节点(直到 [noden])替换为您要内省的每个节点的 UUID。
  7. 在一个单独的终端窗口中监控内省进度日志:

    (undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log
    重要

    确保内省进程运行完。内省通常需要 15 分钟时间用于裸机节点。但是,不正确的内省网络可能会导致它花费更长的时间,这可能会导致内省失败。

  8. 可选:如果您已将 undercloud 配置为通过 IPv6 进行裸机置备,那么您还需要检查 LLDP 是否已为裸机置备服务(ironic)端口设置了 local_link_connection

    (undercloud)$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"
    • 如果裸机节点上的端口的 Local Link Connection 字段为空,则必须使用虚拟数据手动填充 local_link_connection 值。以下示例将虚拟交换机 ID 设置为 52:54:00:00:00:00,并将虚拟端口 ID 设置为 p0

      (undercloud)$ openstack baremetal port set <port_uuid> \
      --local-link-connection switch_id=52:54:00:00:00:00 \
      --local-link-connection port_id=p0
    • 验证 “Local Link Connection” 字段是否包含虚拟数据:

      (undercloud)$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"

内省完成后,所有节点都会变为 available 状态。

8.2.2. 手动配置裸机节点硬件信息

将物理机注册为裸机节点后,您可以手动添加其硬件详情,并为每个以太网 MAC 地址创建裸机端口。在部署 overcloud 前,必须至少创建一个裸机端口。

提示

作为手动内省的替代选择,您可以使用自动 director 内省流程来收集裸机节点的硬件信息。如需更多信息,请参阅使用 director 内省来收集裸机节点硬件信息

先决条件

  • 您已为 overcloud 注册了裸机节点。
  • 您已为 node .json 中注册的节点上的每个端口配置了 local_link_connection。有关更多信息,请参阅为 overcloud 注册节点

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 通过在节点的功能中添加 boot_option':'local 来将每个注册的节点的引导选项设置为 local

    (undercloud)$ openstack baremetal node set \
     --property capabilities="boot_option:local" <node>
    • <node> 替换为裸机节点的 ID。
  4. 指定部署内核并为节点驱动程序部署 ramdisk:

    (undercloud)$ openstack baremetal node set <node> \
      --driver-info deploy_kernel=<kernel_file> \
      --driver-info deploy_ramdisk=<initramfs_file>
    • <node> 替换为裸机节点的 ID。
    • <kernel_file > 替换为 .kernel 镜像的路径,例如 file:///var/lib/ironic/httpboot/agent.kernel
    • <initramfs_file > 替换为 .initramfs 镜像的路径,例如 file:///var/lib/ironic/httpboot/agent.ramdisk
  5. 更新节点属性以匹配节点上的硬件规格:

    (undercloud)$ openstack baremetal node set <node> \
      --property cpus=<cpu> \
      --property memory_mb=<ram> \
      --property local_gb=<disk> \
      --property cpu_arch=<arch>
    • <node> 替换为裸机节点的 ID。
    • <cpu > 替换为 CPU 数量。
    • 将 & lt;ram& gt; 替换为 RAM (以 MB 为单位)。
    • <disk> 替换为磁盘大小(以 GB 为单位)。
    • 将 & lt;arch& gt; 替换为构架类型。
  6. 可选:为每个节点指定 IPMI 密码套件:

    (undercloud)$ openstack baremetal node set <node> \
     --driver-info ipmi_cipher_suite=<version>
    • <node> 替换为裸机节点的 ID。
    • <version > 替换为节点上要使用的密码套件版本。设置为以下有效值之一:

      • 3 - 节点使用带有 SHA1 密码套件的 AES-128。
      • 17 - 节点使用带有 SHA256 密码套件的 AES-128。
  7. 可选:如果您有多个磁盘,请设置 root 设备提示来告知部署 ramdisk 哪个磁盘用于部署:

    (undercloud)$ openstack baremetal node set <node> \
      --property root_device='{"<property>": "<value>"}'
    • <node> 替换为裸机节点的 ID。
    • <property > 和 <value > 替换为您要用于部署的磁盘的详情,如 root_device='{"size": "128"}'

      RHOSP 支持以下属性:

      • model(字符串):设备识别码。
      • vendor(字符串):设备厂商。
      • serial(字符串):磁盘序列号。
      • hctl(字符串):SCSI 的 Host:Channel:Target:Lun。
      • size(整数):设备的大小(以 GB 为单位)。
      • wwn(字符串):唯一的存储 ID。
      • wwn_with_extension(字符串):唯一存储 ID 附加厂商扩展名。
      • wwn_vendor_extension(字符串):唯一厂商存储标识符。
      • rotational(布尔值):旋转磁盘设备为 true (HDD),否则为 false (SSD)。
      • name (字符串):设备名称,例如:/dev/sdb1 仅将此属性用于具有持久名称的设备。

        注意

        如果您指定多个属性,该设备必须与所有这些属性匹配。

  8. 通过在 provisioning 网络中创建带有 NIC 的 MAC 地址的端口来通知节点网卡的裸机置备服务:

    (undercloud)$ openstack baremetal port create --node <node_uuid> <mac_address>
    • <node_uuid> 替换为裸机节点的唯一 ID。
    • <mac_address > 替换为用于 PXE 引导的 NIC 的 MAC 地址。
  9. 验证节点的配置:

    (undercloud)$ openstack baremetal node validate <node>
    +------------+--------+---------------------------------------------+
    | Interface  | Result | Reason                                      |
    +------------+--------+---------------------------------------------+
    | boot       | False  | Cannot validate image information for node  |
    |            |        | a02178db-1550-4244-a2b7-d7035c743a9b        |
    |            |        | because one or more parameters are missing  |
    |            |        | from its instance_info. Missing are:        |
    |            |        | ['ramdisk', 'kernel', 'image_source']       |
    | console    | None   | not supported                               |
    | deploy     | False  | Cannot validate image information for node  |
    |            |        | a02178db-1550-4244-a2b7-d7035c743a9b        |
    |            |        | because one or more parameters are missing  |
    |            |        | from its instance_info. Missing are:        |
    |            |        | ['ramdisk', 'kernel', 'image_source']       |
    | inspect    | None   | not supported                               |
    | management | True   |                                             |
    | network    | True   |                                             |
    | power      | True   |                                             |
    | raid       | True   |                                             |
    | storage    | True   |                                             |
    +------------+--------+---------------------------------------------+

    验证输出 Result 表示以下内容:

    • false :接口失败验证。如果提供的原因包括缺少 instance_info 参数 [\'ramdisk', \'kernel', \'image_source'],这可能是因为计算服务在部署过程开始时填充缺少的参数,因此在此时没有设置它们。如果您使用完整磁盘镜像,则可能需要设置 image_source 才能通过验证。
    • true :接口已通过验证。
    • None: 接口不支持您的驱动。