11.2. 置备裸机 overcloud 节点


要配置 Red Hat OpenStack Platform (RHOSP)环境,您必须执行以下任务:

  1. 为您的 overcloud 注册裸机节点。
  2. 为 director 提供裸机节点硬件的清单。
  3. 在节点定义文件中配置裸机节点的数量、属性和网络布局。
  4. 为每个裸机节点分配一个与节点匹配的资源类,作为其指定的角色。

您还可以执行其他可选任务,如将配置文件匹配到指定 overcloud 节点。

11.2.1. 为 overcloud 注册节点

director 需要节点定义模板,用于指定节点的硬件和电源管理详细信息。您可以使用 JSON 格式、node .json 或 YAML 格式创建此模板 nodes.yaml

流程

  1. 创建名为 nodes.jsonnodes.yaml 的模板,用于列出您的节点。使用以下 JSON 和 YAML 模板示例了解如何创建节点定义模板的结构:

    示例 JSON 模板

    {
      "nodes": [{
        "name": "node01",
        "ports": [{
          "address": "aa:aa:aa:aa:aa:aa",
          "physical_network": "ctlplane",
          "local_link_connection": {
            "switch_id": "52:54:00:00:00:00",
            "port_id": "p0"
          }
        }],
        "cpu": "4",
        "memory": "6144",
        "disk": "40",
        "arch": "x86_64",
        "pm_type": "ipmi",
        "pm_user": "admin",
        "pm_password": "p@55w0rd!",
        "pm_addr": "192.168.24.205"
      },
      {
        "name": "node02",
        "ports": [{
          "address": "bb:bb:bb:bb:bb:bb",
          "physical_network": "ctlplane",
          "local_link_connection": {
            "switch_id": "52:54:00:00:00:00",
            "port_id": "p0"
          }
        }],
        "cpu": "4",
        "memory": "6144",
        "disk": "40",
        "arch": "x86_64",
        "pm_type": "ipmi",
        "pm_user": "admin",
        "pm_password": "p@55w0rd!",
        "pm_addr": "192.168.24.206"
      }]
    }

    示例 YAML 模板

    nodes:
      - name: "node01"
        ports:
          - address: "aa:aa:aa:aa:aa:aa"
            physical_network: ctlplane
            local_link_connection:
              switch_id: 52:54:00:00:00:00
              port_id: p0
        cpu: 4
        memory: 6144
        disk: 40
        arch: "x86_64"
        pm_type: "ipmi"
        pm_user: "admin"
        pm_password: "p@55w0rd!"
        pm_addr: "192.168.24.205"
      - name: "node02"
        ports:
          - address: "bb:bb:bb:bb:bb:bb"
            physical_network: ctlplane
            local_link_connection:
              switch_id: 52:54:00:00:00:00
              port_id: p0
        cpu: 4
        memory: 6144
        disk: 40
        arch: "x86_64"
        pm_type: "ipmi"
        pm_user: "admin"
        pm_password: "p@55w0rd!"
        pm_addr: "192.168.24.206"

    此模板包含以下属性:

    name
    节点的逻辑名称。
    ports

    访问特定 IPMI 设备的端口。您可以定义以下可选端口属性:

    • 地址 :节点上网络接口的 MAC 地址。对于每个系统的 Provisioning NIC,只使用 MAC 地址。
    • physical_network :连接到 Provisioning NIC 的物理网络。
    • local_link_connection:如果在内省期间使用 IPv6 置备并且 LLDP 未正确填充本地链接连接,则必须在 local_link_connection 参数中包含带有 switch_idport_id 字段的虚拟数据。有关如何包含虚拟数据的更多信息,请参阅使用 director 内省来收集裸机节点硬件信息
    cpu
    节点上的 CPU 数量。(可选)
    memory
    以 MB 为单位的内存大小。(可选)
    disk
    以 GB 为单位的硬盘的大小。(可选)
    arch
    系统架构。 (可选)
    pm_type

    要使用的电源管理驱动程序。此示例使用 IPMI 驱动程序 (ipmi)。

    注意

    IPMI 是首选的受支持电源管理驱动程序。有关支持的电源管理类型及其选项的更多信息,请参阅 电源管理驱动程序。如果这些电源管理驱动程序不能正常工作,请将 IPMI 用于电源管理。

    pm_user; pm_password
    IPMI 的用户名和密码。
    pm_addr
    IPMI 设备的 IP 地址。
  2. 验证模板格式化和语法:

    $ source ~/stackrc
    (undercloud)$ openstack overcloud node import --validate-only ~/nodes.json
  3. 将模板文件保存到 stack 用户的主目录(/home/stack/nodes.json)。
  4. 将模板导入到 director,从模板将每个节点注册到 director:

    (undercloud)$ openstack overcloud node import ~/nodes.json
  5. 等待节点完成注册和配置。完成后,确认 director 已成功注册节点:

    (undercloud)$ openstack baremetal node list

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

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

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

  • 自动 :您可以使用 director 的内省过程从每个节点收集硬件信息。此进程在每个节点上引导内省代理。内省代理从节点收集硬件数据并将数据送回 director。director 将硬件数据存储在 OpenStack 内部数据库中。
  • 手动:您可以为每个裸机手动配置基本硬件清单。此清单存储在裸机置备服务(ironic)中,用于管理和监控裸机。

与设置裸机置备服务端口的手动方法相比,director 自动内省过程具有以下优点:

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

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

提示

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

先决条件

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

流程

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

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

    (undercloud)$ validation run --group pre-introspection \
     --inventory <inventory_file>
    • <inventory_file > 替换为 Ansible 清单文件的名称和位置,如 ~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml

      注意

      当您运行验证时,输出中的 Reasons 列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。

  4. 查看验证报告的结果。
  5. 可选:查看特定验证的详细输出:

    (undercloud)$ validation history get --full <UUID>
    • &lt;UUID> 替换为您要查看的报告中特定验证的 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. 可选:如果您已经为通过 IPv6 的裸机置备配置了 undercloud,那么您还需要检查 LLDP 是否为 Bare Metal Provisioning 服务(ironic)端口设置 local_link_connection

    $ 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

      $ 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” 字段是否包含虚拟数据:

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

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

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

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

提示

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

先决条件

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

流程

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

    $ source ~/stackrc
  3. 为节点驱动程序指定部署内核和部署 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
  4. 更新节点属性以匹配节点上的硬件规格:

    (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; 替换为 architecture 类型。
  5. 可选:为每个节点指定 IPMI 密码套件:

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

      • 3 - 节点使用带有 SHA1 密码套件的 AES-128。
      • 17 - 节点使用带有 SHA256 密码套件的 AES-128。
  6. 可选:如果您有多个磁盘,请设置根设备提示来通知部署 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 仅对具有持久名称的设备使用此属性。

        注意

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

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

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

    (undercloud)$ openstack baremetal node validate <node>
    -----------------------------------------------------------------
    | Interface  | Result | Reason                                    |
    -----------------------------------------------------------------
    | bios       | True   |                                           |
    | boot       | True   |                                           |
    | console    | True   |                                           |
    | deploy     | False  | Node 229f0c3d-354a-4dab-9a88-ebd318249ad6 |
    |            |        | failed to validate deploy image info.     |
    |            |        | Some parameters were missing. Missing are:|
    |            |        | [instance_info.image_source]              |
    | inspect    | True   |                                           |
    | management | True   |                                           |
    | network    | True   |                                           |
    | power      | True   |                                           |
    | raid       | True   |                                           |
    | rescue     | True   |                                           |
    | storage    | True   |                                           |
    -----------------------------------------------------------------

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

    • false :接口验证失败。如果提供的原因缺少 instance_info.image_source 参数,这可能是因为它在置备过程中填充,因此此时还没有设置。如果您使用整个磁盘镜像,则可能需要设置 image_source 来传递验证。
    • true :接口已通过验证。
    • None: 接口不支持您的驱动。

11.2.3. 为 overcloud 置备裸机节点

要置备裸机节点,您需要以 YAML 格式在节点定义文件中定义部署的裸机节点的数量和属性,并将 overcloud 角色分配给这些节点。您还可以定义节点的网络布局。

置备过程会从节点定义文件创建一个 heat 环境文件。此 heat 环境文件包含您在节点定义文件中配置的节点规格,包括节点数、预测节点放置、自定义镜像和自定义 NIC。当您部署 overcloud 时,请将此文件包括在部署命令中。置备过程还为节点定义文件中为每个节点或角色定义的所有网络置备端口资源。

先决条件

流程

  1. 查找 stackrc undercloud 凭据文件:

    $ source ~/stackrc
  2. 创建 overcloud-baremetal-deploy.yaml 节点定义文件,并为您要置备的每个角色定义节点数。例如,要置备三个 Controller 节点和三个 Compute 节点,请将以下配置添加到 overcloud-baremetal-deploy.yaml 文件中:

    - name: Controller
      count: 3
    - name: Compute
      count: 3
  3. 可选:配置预先节点放置。例如,使用以下配置在节点 node00node01node02 上置备三个 Controller 节点,在 node04node05node06 上置备三个 Compute 节点:

    - name: Controller
      count: 3
      instances:
      - hostname: overcloud-controller-0
        name: node00
      - hostname: overcloud-controller-1
        name: node01
      - hostname: overcloud-controller-2
        name: node02
    - name: Compute
      count: 3
      instances:
      - hostname: overcloud-novacompute-0
        name: node04
      - hostname: overcloud-novacompute-1
        name: node05
      - hostname: overcloud-novacompute-2
        name: node06
  4. 可选: 默认情况下,置备过程使用 overcloud-hardened-uefi-full.qcow2 镜像。您可以通过指定镜像的本地或远程 URL 来更改特定节点上使用的镜像,或用于角色的所有节点的镜像。以下示例将镜像改为本地 QCOW2 镜像:

    特定节点

    - name: Controller
      count: 3
      instances:
      - hostname: overcloud-controller-0
        name: node00
        image:
          href: file:///var/lib/ironic/images/overcloud-custom.qcow2
      - hostname: overcloud-controller-1
        name: node01
        image:
          href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2
      - hostname: overcloud-controller-2
        name: node02
        image:
          href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2

    角色的所有节点

    - name: Controller
      count: 3
      defaults:
        image:
          href: file:///var/lib/ironic/images/overcloud-custom.qcow2
      instances:
      - hostname: overcloud-controller-0
        name: node00
      - hostname: overcloud-controller-1
        name: node01
      - hostname: overcloud-controller-2
        name: node02

  5. 为角色或者特定节点的网络布局定义网络布局:

    特定节点

    以下示例为特定 Controller 节点置备网络,并为内部 API 网络分配可预测的 IP:

    - name: Controller
      count: 3
      defaults:
        network_config:
          template: /home/stack/templates/nic-config/myController.j2
          default_route_network:
          - external
        instances:
          - hostname: overcloud-controller-0
            name: node00
            networks:
              - network: ctlplane
                vif: true
              - network: external
                subnet: external_subnet
              - network: internal_api
                subnet: internal_api_subnet01
                fixed_ip: 172.21.11.100
              - network: storage
                subnet: storage_subnet01
              - network: storage_mgmt
                subnet: storage_mgmt_subnet01
              - network: tenant
                subnet: tenant_subnet01

    角色的所有节点

    以下示例为 Controller 和 Compute 角色置备网络:

    - name: Controller
      count: 3
      defaults:
        networks:
        - network: ctlplane
          vif: true
        - network: external
          subnet: external_subnet
        - network: internal_api
          subnet: internal_api_subnet01
        - network: storage
          subnet: storage_subnet01
        - network: storage_mgmt
          subnet: storage_mgmt_subnet01
        - network: tenant
          subnet: tenant_subnet01
        network_config:
          template: /home/stack/templates/nic-config/myController.j2 
    1
    
          default_route_network:
          - external
    - name: Compute
      count: 3
      defaults:
        networks:
        - network: ctlplane
          vif: true
        - network: internal_api
          subnet: internal_api_subnet02
        - network: tenant
          subnet: tenant_subnet02
        - network: storage
          subnet: storage_subnet02
        network_config:
          template: /home/stack/templates/nic-config/myCompute.j2
    1
    您可以使用位于 /usr/share/ansible/roles/tripleo_network_config/templates 中的示例 NIC 模板在本地环境文件目录中创建自己的 NIC 模板。
  6. 可选:如果默认磁盘分区大小不满足您的要求,请配置磁盘分区分配。例如,/var/log 分区的默认分区大小是 10 GB。考虑日志存储和保留要求,以确定 10 GB 是否满足您的要求。如果您需要增加日志存储的分配的磁盘大小,请在节点定义文件中添加以下配置来覆盖默认值:

    ansible_playbooks:
      - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-growvols.yaml
        extra_vars:
          role_growvols_args:
            default:
              /=8GB
              /tmp=1GB
              /var/log=<log_size>GB
              /var/log/audit=2GB
              /home=1GB
              /var=100%
    • <log_size > 替换为要分配给日志文件的磁盘大小。
  7. 如果您使用 Object Storage 服务(swift)和整个磁盘 overcloud 镜像、overcloud-hardened-uefi-full,则需要根据磁盘大小以及 /var/srv 的存储要求配置 /srv 分区的大小。如需更多信息,请参阅为对象存储服务配置整个磁盘分区
  8. 可选:使用自定义资源类或配置集功能为特定角色设计 overcloud 节点。如需更多信息,请参阅通过匹配资源类并为角色指定 overcloud 节点通过匹配配置集为角色设计 overcloud 节点
  9. 定义您要分配给节点的任何其他属性。有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。如需节点定义文件示例,请参阅 节点定义文件示例
  10. 置备 overcloud 节点:

    (undercloud)$ openstack overcloud node provision \
     [--templates <templates_directory> \]
     --stack <stack> \
     --network-config \
     --output <deployment_file> \
     /home/stack/templates/<node_definition_file>
    • 可选:包含-- templates 选项以使用您自己的模板,而不是位于 /usr/share/openstack-tripleo-heat-templates 中的默认模板。将 <templates_directory> 替换为包含模板的目录的路径。
    • & lt;stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为 overcloud
    • 包含 --network-config 可选参数,为 cli-overcloud-node-network-config.yaml Ansible playbook 提供网络定义。
    • <deployment_file> 替换为用于部署命令生成的 heat 环境文件的名称,如 /home/stack/templates/overcloud-baremetal-deployed.yaml
    • <node_definition_file > 替换为节点定义文件的名称,如 overcloud-baremetal-deploy.yaml
  11. 在一个单独的终端中监控置备进度:

    (undercloud)$ watch openstack baremetal node list
  12. 使用 metalsmith 工具获取节点的统一视图,包括分配和端口:

    (undercloud)$ metalsmith list
  13. 验证节点与主机名的关联:

    (undercloud)$ openstack baremetal allocation list

11.2.4. 裸机节点置备属性

使用下表了解配置节点属性的可用属性,以及使用 openstack baremetal node provision 命令置备裸机节点时使用的值。

  • 角色属性:使用角色属性来定义各个角色。
  • 每个角色的默认和实例属性: 使用 default 或 instance 属性来指定从可用节点池中分配节点的选择条件,并在裸机节点上设置属性和网络配置属性。

有关创建 裸机定义文件的详情,请参考为 overcloud 置备裸机节点

Expand
表 11.1. 角色属性
属性

name

(必需)角色名称。

数�

要为这个角色置备的节点数量。默认值为 1

默认值

instances条目属性的默认值字典。instances条目属性覆盖您在 defaults 参数中指定的任何默认值。

实例

用于为特定节点指定属性的值的字典。有关 instances 参数中支持的属性的更多信息,请参阅 defaultsinstances 属性。定义的节点数量不能大于 count 参数的值。

hostname_format

覆盖这个角色的默认主机名格式。默认生成的主机名派生自 overcloud 堆栈名称、角色和递增索引,它们都是小写的。例如,Controller 角色的默认格式为 %stackname%-controller-%index%。只有 Compute 角色不会遵循角色名称规则。Compute 默认格式为 %stackname%-novacompute-%index%

ansible_playbooks

Ansible playbook 和 Ansible 变量的值字典。playbook 在节点置备后针对角色实例运行,然后再进行节点网络配置。如需有关指定 Ansible playbook 的更多信息,请参阅 ansible_playbooks 属性

Expand
表 11.2. 默认 和实例 属性
属性

hostname

(实例 仅)指定 实例属性应用到的 节点的主机名。主机名派生自 hostname_format 属性。您可以使用自定义主机名。

name

(仅限实例 )要置备的节点的名称。

image

要在节点上置备的镜像的详情。有关支持的 镜像 属性的详情,请参考 镜像 属性

功能

选择与节点功能匹配的条件。

config_drive

向传递给节点的 config-drive 添加 data 和 first-boot 命令。如需更多信息,请参阅 config_drive 属性

注意

对于必须在第一次引导时执行的配置,只使用 config_drive。对于所有其他自定义配置,创建一个 Ansible playbook,并使用 ansible_playbooks 属性在节点置备后针对角色实例执行 playbook。

Managed

设置为 true (默认)以使用 metalsmith 置备实例。设置为 false,以作为预置备处理实例。

networks

代表实例网络的字典列表。有关配置网络属性的更多信息,请参阅 网络属性

network_config

连接到角色或实例的网络配置文件。有关配置到网络配置文件的链接的更多信息,请参阅 network_config 属性

配置集

用于配置集匹配的选择条件。有关更多信息,请参阅通过匹配配置集为角色设计 overcloud 节点

已置备

设置为 true (默认)以置备节点。设置为 false 以取消置备节点。如需更多信息,请参阅 缩减裸机节点

resource_class

与节点的资源类匹配的选择条件。默认值为 baremetal。有关更多信息,请参阅通过匹配资源类为角色设计 overcloud 节点

root_size_gb

GiB 中根分区的大小。默认值为 49

swap_size_mb

MiB 中 swap 分区的大小。

遍历

作为与节点遍历匹配的选择条件的遍历列表。

Expand
表 11.3. 镜像 属性
属性

href

指定您要置备到节点上的根分区或完整磁盘镜像的 URL。支持的 URL 方案: file://http://https://

注意

如果您使用 file:// URL 方案为镜像指定本地 URL,则镜像路径必须指向 /var/lib/ironic/images/ 目录,因为 / var/lib/ironic/images 是从 undercloud 绑定挂载到 ironic-conductor 容器中,以便明确为提供镜像。

checksum

指定根分区或完整磁盘镜像的 MD5 校验和。当 href 是 URL 时需要此项。

kernel

指定内核镜像的镜像引用或 URL。仅在分区镜像中使用此属性。

ramdisk

指定 ramdisk 镜像的镜像引用或 URL。仅在分区镜像中使用此属性。

Expand
表 11.4. 网络 属性
属性

fixed_ip

要用于这个网络的特定 IP 地址。

network

要创建网络端口的网络。

子网

要创建网络端口的子网。

端口

使用现有端口而不是创建新端口。

vif

在 provisioning 网络(ctlplane)上设置为 true,将网络作为虚拟接口(VIF)连接。设置为 false,以在没有 VIF 附加的情况下创建网络服务 API 资源。

Expand
表 11.5. network_config 属性
属性

模板

指定应用节点网络配置时要使用的 Ansible J2 NIC 配置模板。有关配置 NIC 模板的详情,请参考配置 overcloud 网络

physical_bridge_name

用于创建用于访问外部网络的 OVS 网桥的名称。默认网桥名称为 br-ex

public_interface_name

指定要添加到公共网桥的接口名称。默认接口是 nic1

network_config_update

设置为 true 以在更新时应用网络配置更改。默认禁用此选项。

net_config_data_lookup

为每个节点或节点组指定 NIC 映射配置 os-net-config

default_route_network

用于默认路由的网络。默认路由网络是 ctlplane

networks_skip_config

配置节点网络时要跳过的网络列表。

dns_search_domains

要按优先级顺序添加到 resolv.conf 的 DNS 搜索域列表。

bond_interface_ovs_options

用于绑定接口的 OVS 选项或绑定选项,如 lacp=activebond_mode=balance-slb 用于 OVS 绑定,以及用于 Linux bond 的 mode=4

num_dpdk_interface_rx_queues

指定 DPDK 绑定或 DPDK 端口所需的 RX 队列数量。

Expand
表 11.6. config_drive 属性
属性

cloud_config

cloud-init 云配置数据字典,用于在节点引导时运行的任务。例如,要在第一次引导时将自定义名称服务器写入 resolve.conf 文件中,请在 config_drive 属性中添加以下 cloud_config

config_drive:
  cloud_config:
    manage_resolv_conf: true
    resolv_conf:
      nameservers:
        - 8.8.8.8
        - 8.8.4.4
      searchdomains:
        - abc.example.com
        - xyz.example.com
      domain: example.com
      sortlist:
        - 10.0.0.1/255
        - 10.0.0.2
      options:
        rotate: true
        timeout: 1

meta_data

与 config-drive cloud-init 元数据包含的额外元数据。元数据添加到角色名称上设置的生成的元数据: public_keysuuidnamehostnameinstance-typecloud-init 使此元数据作为实例数据可用。

Expand
表 11.7. ansible_playbooks 属性
属性

playbook

相对于角色定义 YAML 文件的 Ansible playbook 的路径。

extra_vars

运行 playbook 时要设置的额外 Ansible 变量。使用以下语法指定额外变量:

ansible_playbooks:
  - playbook: a_playbook.yaml
    extra_vars:
      param1: value1
      param2: value2

例如,要增大使用整个磁盘 overcloud 镜像 overcloud-hardened-uefi-full.qcow2 部署的节点的 LVM 卷,请在 playbook 属性中添加以下额外变量:

ansible_playbooks:
  - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-growvols.yaml
    extra_vars:
      role_growvols_args:
        default:
          /=8GB
          /tmp=1GB
          /var/log=10GB
          /var/log/audit=2GB
          /home=1GB
          /var=100%
        Controller:
          /=8GB
          /tmp=1GB
          /var/log=10GB
          /var/log/audit=2GB
          /home=1GB
          /srv=50GB
          /var=100%

11.2.5. 从节点定义文件中删除失败的裸机节点

如果因为节点硬件或网络配置失败而节点置备失败,您可以在再次运行置备步骤前删除失败的节点。要删除在置备过程中失败的裸机节点,请标记您要从节点定义文件中的堆栈中删除的节点,并在置备正常工作的裸机节点前取消置备节点。

先决条件

  • 已安装 undercloud。如需更多信息,请参阅安装 director
  • 由于节点硬件故障,裸机节点置备会失败。

流程

  1. 查找 stackrc undercloud 凭据文件:

    $ source ~/stackrc
  2. 打开 overcloud-baremetal-deploy.yaml 节点定义文件。
  3. 减少节点分配到的角色的 count 参数。例如,以下配置更新了 ObjectStorage 角色的 count 参数,以反映专用于 ObjectStorage 的节点数量被减少为 3:

    - name: ObjectStorage
      count: 3
  4. 定义您要从堆栈中删除的节点的主机名名称(如果尚未在角色的 instances 属性中定义)。
  5. 将属性 provisioned: false 添加到您要删除的节点。例如,要从堆栈中删除节点 overcloud-objectstorage-1,请在 overcloud-baremetal-deploy.yaml 文件中包含以下片断:

    - name: ObjectStorage
      count: 3
      instances:
      - hostname: overcloud-objectstorage-0
        name: node00
      - hostname: overcloud-objectstorage-1
        name: node01
        # Removed from cluster due to disk failure
        provisioned: false
      - hostname: overcloud-objectstorage-2
        name: node02
      - hostname: overcloud-objectstorage-3
        name: node03
  6. 取消置备裸机节点:

    (undercloud)$ openstack overcloud node unprovision \
     --stack <stack> \
     --network-ports \
     /home/stack/templates/overcloud-baremetal-deploy.yaml
    • & lt;stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为 overcloud
  7. 置备 overcloud 节点,以生成更新的 heat 环境文件,以包含在部署命令中:

    (undercloud)$ openstack overcloud node provision \
    --stack <stack> \
    --output <deployment_file> \
    /home/stack/templates/overcloud-baremetal-deploy.yaml
    • <deployment_file> 替换为用于部署命令生成的 heat 环境文件的名称,如 /home/stack/templates/overcloud-baremetal-deployed.yaml

您可以使用自定义资源类为特定角色指定 overcloud 节点。资源类将节点与部署角色匹配。默认情况下,所有节点都被分配为 baremetal 的资源类。

注意

要在置备节点后更改分配给节点的资源类,您必须使用 scale down 过程取消置备节点,然后使用扩展过程使用新的资源类分配来重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点

先决条件

  • 您需要为 overcloud 执行裸机节点的初始置备。

流程

  1. 使用自定义资源类分配您要为角色指定的每个裸机节点:

    (undercloud)$ openstack baremetal node set \
     --resource-class <resource_class> <node>
    • <resource_class > 替换为资源类的名称,如 baremetal.CPU-PINNING
    • <node> 替换为裸机节点的 ID。
  2. 将角色添加到 overcloud-baremetal-deploy.yaml 文件中(如果尚未定义)。
  3. 指定您要分配给角色节点的资源类:

    - name: <role>
      count: 1
      defaults:
        resource_class: <resource_class>
    • <role > 替换为角色的名称。
    • <resource_class > 替换为在第 1 步中为资源类指定的名称。
  4. 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。

您可以使用配置集功能为特定角色指定 overcloud 节点。配置集与部署角色的节点功能匹配。

提示

您还可以使用内省规则执行自动配置集分配。如需更多信息,请参阅配置自动配置集标记

注意

要在置备节点后更改分配给节点的配置集,您必须使用 scale down 过程取消置备节点,然后使用扩展流程使用新配置集分配重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点

先决条件

  • 您需要为 overcloud 执行裸机节点的初始置备。

流程

  1. 每次添加新节点功能时,现有节点功能都会被覆盖。因此,您必须检索每个注册节点的现有功能,以便再次设置它们:

    $ openstack baremetal node show <node> \
     -f json -c properties | jq -r .properties.capabilities
  2. 通过将 profile:<profile> 添加到节点的现有功能,为您要与角色 配置集匹配 的每个裸机节点分配配置集功能:

    (undercloud)$ openstack baremetal node set  <node> \
     --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"
    • <node > 替换为裸机节点的名称或 ID。
    • <profile > 替换为与角色配置集匹配的配置集的名称。
    • <capability_1& gt; 以及所有功能(直到 <capability_n >)替换为在第 1 步中获取的每个功能。
  3. 将角色添加到 overcloud-baremetal-deploy.yaml 文件中(如果尚未定义)。
  4. 定义您要分配给角色节点的配置集:

    - name: <role>
      count: 1
      defaults:
        profile: <profile>
    • <role > 替换为角色的名称。
    • <profile > 替换为与节点功能匹配的配置集名称。
  5. 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。

11.2.8. 为对象存储服务配置整个磁盘分区

完整磁盘镜像 overcloud-hardened-uefi-full 将分区为单独的卷。默认情况下,使用整个磁盘 overcloud 镜像部署的节点 /var 分区会自动增加,直到磁盘被完全分配为止。如果您使用 Object Storage 服务(swift),请根据磁盘大小以及 /var/srv 的存储要求来配置 /srv 分区的大小。

先决条件

  • 您需要为 overcloud 执行裸机节点的初始置备。

流程

  1. 使用 role_growvols_args 作为 overcloud-baremetal-deploy.yaml 节点定义文件中的 Ansible_playbooks 定义中的额外 Ansible 变量来配置 /srv/var 分区。将 /srv/var 设置为绝对大小(以 GB 为单位),并将其他大小设置为 100% 以消耗剩余的磁盘空间。

    • 以下示例配置将 /srv 设置为 Controller 节点上部署的对象存储服务绝对大小,并将 /var 设置为 100% 以消耗剩余的磁盘空间:

      ansible_playbooks:
        - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-growvols.yaml
          extra_vars:
            role_growvols_args:
              default:
                /=8GB
                /tmp=1GB
                /var/log=10GB
                /var/log/audit=2GB
                /home=1GB
                /var=100%
              Controller:
                /=8GB
                /tmp=1GB
                /var/log=10GB
                /var/log/audit=2GB
                /home=1GB
                /srv=50GB
                /var=100%
    • 以下示例配置将 /var 设置为绝对大小,/srv 设置为 100%,以消耗 Object Storage 节点的其余磁盘空间:

      ansible_playbooks:
        - playbook: /usr/share/ansible/tripleo-playbooks/cli-overcloud-node-growvols.yaml
          extra_vars:
            role_growvols_args:
              default:
                /=8GB
                /tmp=1GB
                /var/log=10GB
                /var/log/audit=2GB
                /home=1GB
                /var=100%
             ObjectStorage:
                /=8GB
                /tmp=1GB
                /var/log=10GB
                /var/log/audit=2GB
                /home=1GB
                /var=10GB
                /srv=100%
  2. 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。

11.2.9. 节点定义文件示例

以下示例节点定义文件定义了三个 Controller 节点以及三个 Compute 节点以及它们使用的默认网络预测节点放置。这个示例还演示了如何定义根据匹配资源类或节点功能配置集指定的自定义角色。

- name: Controller
  count: 3
  defaults:
    image:
      href: file:///var/lib/ironic/images/overcloud-custom.qcow2
    networks:
    - network: ctlplane
      vif: true
    - network: external
      subnet: external_subnet
    - network: internal_api
      subnet: internal_api_subnet01
    - network: storage
      subnet: storage_subnet01
    - network: storagemgmt
      subnet: storage_mgmt_subnet01
    - network: tenant
      subnet: tenant_subnet01
    network_config:
        template: /home/stack/templates/nic-config/myController.j2
        default_route_network:
        - external
    profile: nodeCapability
  instances:
  - hostname: overcloud-controller-0
    name: node00
  - hostname: overcloud-controller-1
    name: node01
  - hostname: overcloud-controller-2
    name: node02
- name: Compute
  count: 3
  defaults:
    networks:
    - network: ctlplane
      vif: true
    - network: internal_api
      subnet: internal_api_subnet02
    - network: tenant
      subnet: tenant_subnet02
    - network: storage
      subnet: storage_subnet02
    network_config:
      template: /home/stack/templates/nic-config/myCompute.j2
    resource_class: baremetal.COMPUTE
  instances:
  - hostname: overcloud-novacompute-0
    name: node04
  - hostname: overcloud-novacompute-1
    name: node05
  - hostname: overcloud-novacompute-2
    name: node06

11.2.10. 启用虚拟介质引导

重要

该功能在此发行版本中作为技术预览提供,因此不享有红帽的全面支持。它只应用于测试,不应部署在生产环境中。有关技术预览功能的更多信息,请参阅覆盖范围详细信息

您可以使用 Redfish 虚拟介质引导,向节点的 Baseboard Management Controller (BMC) 提供引导镜像,以便 BMC 可将镜像插入到其中一个虚拟驱动器中。然后,节点可以从虚拟驱动器引导到镜像中存在的操作系统。

Redfish 硬件类型支持通过虚拟介质引导部署、救援和用户镜像。裸机置备服务(ironic)使用与节点关联的内核和 ramdisk 镜像,在节点部署时为 UEFI 或 BIOS 引导模式构建可引导的 ISO 镜像。虚拟介质引导的主要优点是可以消除 PXE 的 TFTP 镜像传输阶段,并使用 HTTP GET 或其他方法。

要通过虚拟介质使用 redfish 硬件类型引导节点,请将引导接口设置为 redfish-virtual-media,并定义 EFI 系统分区(ESP)镜像。然后将注册节点配置为使用 Redfish 虚拟介质引导。

前提条件

  • undercloud.conf 文件的 enabled_hardware_types 参数中启用 redfish 驱动程序。
  • 注册和注册裸机节点。
  • Image Service (glance) 中的 IPA 和实例镜像。
  • 对于 UEFI 节点,还必须在 Image Service (glance) 中有一个 EFI 系统分区镜像 (ESP)。
  • 裸机类别。
  • 用于清理和置备的网络。

流程

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

    $ source ~/stackrc
  3. 将裸机置备服务引导接口设置为 redfish-virtual-media

    (undercloud)$ openstack baremetal node set --boot-interface redfish-virtual-media <node>
    • <node > 替换为节点的名称。
  4. 定义 ESP 镜像:

    (undercloud)$ openstack baremetal node set --driver-info bootloader=<esp> <node>
    • <esp > 替换为镜像服务(glance)镜像 UUID 或 ESP 镜像的 URL。
    • <node > 替换为节点的名称。
  5. 在裸机节点上创建一个端口,并将端口与裸机节点上 NIC 的 MAC 地址关联:

    (undercloud)$ openstack baremetal port create --pxe-enabled True \
     --node <node_uuid> <mac_address>
    • <node_uuid > 替换为裸机节点的 UUID。
    • <mac_address > 替换为裸机节点上 NIC 的 MAC 地址。

11.2.11. 为多磁盘 Ceph 集群定义根磁盘

Ceph Storage 节点通常使用多个磁盘。director 必须使用多个磁盘配置来识别根磁盘。overcloud 镜像在置备过程中写入根磁盘。

硬件属性用于识别根磁盘。有关您可以用来识别根磁盘的属性的更多信息,请参阅 第 11.2.12 节 “标识根磁盘的属性”

流程

  1. 从每个节点的硬件内省验证磁盘信息:

    (undercloud)$ openstack baremetal introspection data save <node_uuid> | --file <output_file_name>
    • <node_uuid > 替换为节点的 UUID。
    • 将 < output_file_name > 替换为包含节点内省输出的文件名称。

      例如,一个节点的数据可能会显示 3 个磁盘:

      [
        {
          "size": 299439751168,
          "rotational": true,
          "vendor": "DELL",
          "name": "/dev/sda",
          "wwn_vendor_extension": "0x1ea4dcc412a9632b",
          "wwn_with_extension": "0x61866da04f3807001ea4dcc412a9632b",
          "model": "PERC H330 Mini",
          "wwn": "0x61866da04f380700",
          "serial": "61866da04f3807001ea4dcc412a9632b"
        }
        {
          "size": 299439751168,
          "rotational": true,
          "vendor": "DELL",
          "name": "/dev/sdb",
          "wwn_vendor_extension": "0x1ea4e13c12e36ad6",
          "wwn_with_extension": "0x61866da04f380d001ea4e13c12e36ad6",
          "model": "PERC H330 Mini",
          "wwn": "0x61866da04f380d00",
          "serial": "61866da04f380d001ea4e13c12e36ad6"
        }
        {
          "size": 299439751168,
          "rotational": true,
          "vendor": "DELL",
          "name": "/dev/sdc",
          "wwn_vendor_extension": "0x1ea4e31e121cfb45",
          "wwn_with_extension": "0x61866da04f37fc001ea4e31e121cfb45",
          "model": "PERC H330 Mini",
          "wwn": "0x61866da04f37fc00",
          "serial": "61866da04f37fc001ea4e31e121cfb45"
        }
      ]
  2. 使用唯一硬件属性为节点设置根磁盘:

    (undercloud)$ openstack baremetal node set --property root_device='{<property_value>}' <node-uuid>

    • 将 < property_value > 替换为内省数据中的唯一硬件属性值,以设置根磁盘。
    • <node_uuid > 替换为节点的 UUID。

      注意

      唯一的硬件属性是硬件内省步骤中唯一标识磁盘的任何属性。例如,以下命令使用磁盘序列号来设置根磁盘:

      (undercloud)$ openstack baremetal node set --property root_device='{"serial": "61866da04f380d001ea4e13c12e36ad6"}' 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0

  3. 将每个节点的 BIOS 配置为首先从网络引导,然后配置根磁盘。

director 识别特定磁盘以用作根磁盘。运行 openstack overcloud node provision 命令时,director 置备 overcloud 镜像并将其写入根磁盘。

11.2.12. 标识根磁盘的属性

您可以定义多个属性以帮助 director 识别根磁盘:

  • 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。
重要

name 属性用于具有持久名称的设备。不要使用 name 属性来为没有持久名称的设备设置根磁盘,因为在节点引导时该值可能会改变。

Red Hat OpenStack Platform (RHOSP)部署的默认镜像是 overcloud-hardened-uefi-full.qcow2overcloud-hardened-uefi-full.qcow2 镜像使用有效的 Red Hat OpenStack Platform (RHOSP)订阅。当您不想消耗您的订阅权利时,您可以使用 overcloud-minimal 镜像以避免达到您付费的红帽订阅的限制。例如,这非常有用,例如,您希望只使用 Ceph 守护进程置备节点,或者当您要置备您不想运行任何其他 OpenStack 服务时的裸机操作系统(OS)时。有关如何获取 overcloud-minimal 镜像的信息,请参阅 获取 overcloud 节点的镜像

注意

overcloud-minimal 镜像仅支持标准 Linux 网桥。overcloud-minimal 镜像不支持 Open vSwitch (OVS),因为 OVS 是一个需要 Red Hat OpenStack Platform 订阅权利的 OpenStack 服务。部署 Ceph Storage 节点不需要 OVS。使用 linux_bond 定义绑定,而不使用 ovs_bond。有关 linux_bond 的更多信息,请参阅创建 Linux 绑定

流程

  1. 打开 overcloud-baremetal-deploy.yaml 文件。
  2. 为您要使用 overcloud-minimal 镜像的节点添加或更新 image 属性。您可以在特定节点上将镜像设置为 overcloud-minimal,或针对角色的所有节点:

    特定节点

    - name: Ceph
      count: 3
      instances:
      - hostname: overcloud-ceph-0
        name: node00
        image:
          href: file:///var/lib/ironic/images/overcloud-minimal.qcow2
      - hostname: overcloud-ceph-1
        name: node01
        image:
          href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2
      - hostname: overcloud-ceph-2
        name: node02
        image:
          href: file:///var/lib/ironic/images/overcloud-full-custom.qcow2

    角色的所有节点

    - name: Ceph
      count: 3
      defaults:
        image:
          href: file:///var/lib/ironic/images/overcloud-minimal.qcow2
      instances:
      - hostname: overcloud-ceph-0
        name: node00
      - hostname: overcloud-ceph-1
        name: node01
      - hostname: overcloud-ceph-2
        name: node02

  3. roles_data.yaml 角色定义文件中,将 rhsm_enforce 参数设置为 False

    rhsm_enforce: False
  4. 运行 provisioning 命令:

    (undercloud)$ openstack overcloud node provision \
    --stack stack \
    --output /home/stack/templates/overcloud-baremetal-deployed.yaml \
    /home/stack/templates/overcloud-baremetal-deploy.yaml
  5. overcloud-baremetal-deployed.yaml 环境文件传递给 openstack overcloud deploy 命令。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部