11.2. 置备裸机 overcloud 节点
要配置 Red Hat OpenStack Platform (RHOSP)环境,您必须执行以下任务:
- 为您的 overcloud 注册裸机节点。
- 为 director 提供裸机节点硬件的清单。
- 在节点定义文件中配置裸机节点的数量、属性和网络布局。
- 为每个裸机节点分配一个与节点匹配的资源类,作为其指定的角色。
您还可以执行其他可选任务,如将配置文件匹配到指定 overcloud 节点。
11.2.1. 为 overcloud 注册节点 复制链接链接已复制到粘贴板!
director 需要节点定义模板,用于指定节点的硬件和电源管理详细信息。您可以使用 JSON 格式、node .json 或 YAML 格式创建此模板 nodes.yaml。
流程
创建名为
nodes.json或nodes.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_id和port_id字段的虚拟数据。有关如何包含虚拟数据的更多信息,请参阅使用 director 内省来收集裸机节点硬件信息。
-
- cpu
- 节点上的 CPU 数量。(可选)
- memory
- 以 MB 为单位的内存大小。(可选)
- disk
- 以 GB 为单位的硬盘的大小。(可选)
- arch
- 系统架构。 (可选)
- pm_type
要使用的电源管理驱动程序。此示例使用 IPMI 驱动程序 (
ipmi)。注意IPMI 是首选的受支持电源管理驱动程序。有关支持的电源管理类型及其选项的更多信息,请参阅 电源管理驱动程序。如果这些电源管理驱动程序不能正常工作,请将 IPMI 用于电源管理。
- pm_user; pm_password
- IPMI 的用户名和密码。
- pm_addr
- IPMI 设备的 IP 地址。
验证模板格式化和语法:
$ source ~/stackrc (undercloud)$ openstack overcloud node import --validate-only ~/nodes.json-
将模板文件保存到
stack用户的主目录(/home/stack/nodes.json)。 将模板导入到 director,从模板将每个节点注册到 director:
(undercloud)$ openstack overcloud node import ~/nodes.json等待节点完成注册和配置。完成后,确认 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属性。
11.2.2.1. 使用 director 内省来收集裸机节点硬件信息 复制链接链接已复制到粘贴板!
将物理计算机注册为裸机节点后,您可以使用 director 内省自动添加其硬件详细信息并为每个以太网 MAC 地址创建端口。
作为自动内省的替代选择,您可以手动为 director 提供裸机节点的硬件信息。如需更多信息,请参阅 手动配置裸机节点硬件信息。
先决条件
- 您已为 overcloud 注册了裸机节点。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc运行 pre-introspection 验证组来检查内省要求:
(undercloud)$ validation run --group pre-introspection \ --inventory <inventory_file>将
<inventory_file> 替换为 Ansible 清单文件的名称和位置,如~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml。注意当您运行验证时,输出中的
Reasons列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
- 查看验证报告的结果。
可选:查看特定验证的详细输出:
(undercloud)$ validation history get --full <UUID>将
<UUID> 替换为您要查看的报告中特定验证的 UUID。重要FAILED验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED验证可能会显示生产环境中潜在的问题。
检查每个节点的硬件属性。您可以检查所有节点或特定节点的硬件属性:
检查所有节点的硬件属性:
(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。
-
使用--
在一个单独的终端窗口中监控内省进度日志:
(undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log重要确保内省进程完成运行。内省通常需要 15 分钟时间用于裸机节点。但是,错误大小的内省网络可能会导致它需要更长的时间,这可能会导致内省失败。
可选:如果您已经为通过 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 注册节点。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc为节点驱动程序指定部署内核和部署 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。
-
将
更新节点属性以匹配节点上的硬件规格:
(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> 替换为 RAM (以 MB 为单位)。 -
将
<disk>替换为磁盘大小(以 GB 为单位)。 -
将 &
lt;arch> 替换为 architecture 类型。
-
将
可选:为每个节点指定 IPMI 密码套件:
(undercloud)$ openstack baremetal node set <node> \ --driver-info ipmi_cipher_suite=<version>-
将
<node>替换为裸机节点的 ID。 将
<version> 替换为节点上要使用的密码套件版本。设置为以下有效值之一:-
3- 节点使用带有 SHA1 密码套件的 AES-128。 -
17- 节点使用带有 SHA256 密码套件的 AES-128。
-
-
将
可选:如果您有多个磁盘,请设置根设备提示来通知部署 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 仅对具有持久名称的设备使用此属性。注意如果您指定多个属性,该设备必须与所有这些属性匹配。
-
-
将
通过在 provisioning 网络中创建带有 NIC 的 MAC 地址的端口来通知节点网卡的裸机置备服务:
(undercloud)$ openstack baremetal port create --node <node_uuid> <mac_address>-
将
<node_uuid>替换为裸机节点的唯一 ID。 -
将
<mac_address> 替换为用于 PXE 引导的 NIC 的 MAC 地址。
-
将
验证节点的配置:
(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 时,请将此文件包括在部署命令中。置备过程还为节点定义文件中为每个节点或角色定义的所有网络置备端口资源。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
- 裸机节点已注册、内省,并可用于置备和部署。有关更多信息,请参阅为 overcloud 注册节点,以及创建 裸机节点硬件的清单。
流程
查找
stackrcundercloud 凭据文件:$ source ~/stackrc创建
overcloud-baremetal-deploy.yaml节点定义文件,并为您要置备的每个角色定义节点数。例如,要置备三个 Controller 节点和三个 Compute 节点,请将以下配置添加到overcloud-baremetal-deploy.yaml文件中:- name: Controller count: 3 - name: Compute count: 3可选:配置预先节点放置。例如,使用以下配置在节点
node00、node01和node02上置备三个 Controller 节点,在node04、node05和node06上置备三个 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可选: 默认情况下,置备过程使用
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为角色或者特定节点的网络布局定义网络布局:
特定节点
以下示例为特定 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.j21 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 模板。
可选:如果默认磁盘分区大小不满足您的要求,请配置磁盘分区分配。例如,
/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> 替换为要分配给日志文件的磁盘大小。
-
将
-
如果您使用 Object Storage 服务(swift)和整个磁盘 overcloud 镜像、
overcloud-hardened-uefi-full,则需要根据磁盘大小以及/var和/srv的存储要求配置/srv分区的大小。如需更多信息,请参阅为对象存储服务配置整个磁盘分区。 - 可选:使用自定义资源类或配置集功能为特定角色设计 overcloud 节点。如需更多信息,请参阅通过匹配资源类并为角色指定 overcloud 节点和通过匹配配置集为角色设计 overcloud 节点。
- 定义您要分配给节点的任何其他属性。有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。如需节点定义文件示例,请参阅 节点定义文件示例。
置备 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>替换为包含模板的目录的路径。 -
将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。 -
包含
--network-config可选参数,为cli-overcloud-node-network-config.yamlAnsible playbook 提供网络定义。 -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。 -
将
<node_definition_file> 替换为节点定义文件的名称,如overcloud-baremetal-deploy.yaml。
-
可选:包含--
在一个单独的终端中监控置备进度:
(undercloud)$ watch openstack baremetal node list-
当置备成功后,节点状态将从
available变为active。 - 如果因为节点硬件或网络配置失败而节点置备失败,您可以在再次运行置备步骤前删除失败的节点。如需更多信息,请参阅从节点定义文件中删除失败的裸机节点。
-
当置备成功后,节点状态将从
使用
metalsmith工具获取节点的统一视图,包括分配和端口:(undercloud)$ metalsmith list验证节点与主机名的关联:
(undercloud)$ openstack baremetal allocation list
后续步骤
11.2.4. 裸机节点置备属性 复制链接链接已复制到粘贴板!
使用下表了解配置节点属性的可用属性,以及使用 openstack baremetal node provision 命令置备裸机节点时使用的值。
- 角色属性:使用角色属性来定义各个角色。
- 每个角色的默认和实例属性: 使用 default 或 instance 属性来指定从可用节点池中分配节点的选择条件,并在裸机节点上设置属性和网络配置属性。
有关创建 裸机定义文件的详情,请参考为 overcloud 置备裸机节点。
| 属性 | 值 |
|---|---|
|
| (必需)角色名称。 |
|
|
要为这个角色置备的节点数量。默认值为 |
|
|
|
|
|
用于为特定节点指定属性的值的字典。有关 |
|
|
覆盖这个角色的默认主机名格式。默认生成的主机名派生自 overcloud 堆栈名称、角色和递增索引,它们都是小写的。例如,Controller 角色的默认格式为 |
|
|
Ansible playbook 和 Ansible 变量的值字典。playbook 在节点置备后针对角色实例运行,然后再进行节点网络配置。如需有关指定 Ansible playbook 的更多信息,请参阅 |
| 属性 | 值 |
|---|---|
|
|
( |
|
|
(仅限 |
|
|
要在节点上置备的镜像的详情。有关支持的 |
|
| 选择与节点功能匹配的条件。 |
|
|
向传递给节点的 config-drive 添加 data 和 first-boot 命令。如需更多信息,请参阅 注意
对于必须在第一次引导时执行的配置,只使用 |
|
|
设置为 |
|
|
代表实例网络的字典列表。有关配置网络属性的更多信息,请参阅 |
|
|
连接到角色或实例的网络配置文件。有关配置到网络配置文件的链接的更多信息,请参阅 |
|
| 用于配置集匹配的选择条件。有关更多信息,请参阅通过匹配配置集为角色设计 overcloud 节点。 |
|
|
设置为 |
|
|
与节点的资源类匹配的选择条件。默认值为 |
|
|
GiB 中根分区的大小。默认值为 |
|
| MiB 中 swap 分区的大小。 |
|
| 作为与节点遍历匹配的选择条件的遍历列表。 |
| 属性 | 值 |
|---|---|
|
|
指定您要置备到节点上的根分区或完整磁盘镜像的 URL。支持的 URL 方案: 注意
如果您使用 |
|
|
指定根分区或完整磁盘镜像的 MD5 校验和。当 |
|
| 指定内核镜像的镜像引用或 URL。仅在分区镜像中使用此属性。 |
|
| 指定 ramdisk 镜像的镜像引用或 URL。仅在分区镜像中使用此属性。 |
| 属性 | 值 |
|---|---|
|
| 要用于这个网络的特定 IP 地址。 |
|
| 要创建网络端口的网络。 |
|
| 要创建网络端口的子网。 |
|
| 使用现有端口而不是创建新端口。 |
|
|
在 provisioning 网络( |
| 属性 | 值 |
|---|---|
|
| 指定应用节点网络配置时要使用的 Ansible J2 NIC 配置模板。有关配置 NIC 模板的详情,请参考配置 overcloud 网络。 |
|
|
用于创建用于访问外部网络的 OVS 网桥的名称。默认网桥名称为 |
|
|
指定要添加到公共网桥的接口名称。默认接口是 |
|
|
设置为 |
|
|
为每个节点或节点组指定 NIC 映射配置 |
|
|
用于默认路由的网络。默认路由网络是 |
|
| 配置节点网络时要跳过的网络列表。 |
|
|
要按优先级顺序添加到 |
|
|
用于绑定接口的 OVS 选项或绑定选项,如 |
|
| 指定 DPDK 绑定或 DPDK 端口所需的 RX 队列数量。 |
| 属性 | 值 |
|---|---|
|
|
|
|
|
与 config-drive |
| 属性 | 值 |
|---|---|
|
| 相对于角色定义 YAML 文件的 Ansible playbook 的路径。 |
|
| 运行 playbook 时要设置的额外 Ansible 变量。使用以下语法指定额外变量:
例如,要增大使用整个磁盘 overcloud 镜像
|
11.2.5. 从节点定义文件中删除失败的裸机节点 复制链接链接已复制到粘贴板!
如果因为节点硬件或网络配置失败而节点置备失败,您可以在再次运行置备步骤前删除失败的节点。要删除在置备过程中失败的裸机节点,请标记您要从节点定义文件中的堆栈中删除的节点,并在置备正常工作的裸机节点前取消置备节点。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
- 由于节点硬件故障,裸机节点置备会失败。
流程
查找
stackrcundercloud 凭据文件:$ source ~/stackrc-
打开
overcloud-baremetal-deploy.yaml节点定义文件。 减少节点分配到的角色的
count参数。例如,以下配置更新了ObjectStorage角色的 count 参数,以反映专用于ObjectStorage的节点数量被减少为 3:- name: ObjectStorage count: 3-
定义您要从堆栈中删除的节点的
主机名和名称(如果尚未在角色的instances属性中定义)。 将属性
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取消置备裸机节点:
(undercloud)$ openstack overcloud node unprovision \ --stack <stack> \ --network-ports \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
将
<stack> 替换为置备裸机节点的堆栈的名称。如果未指定,则默认为overcloud。
-
将
置备 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。
-
将
11.2.6. 通过匹配资源类为角色设计 overcloud 节点 复制链接链接已复制到粘贴板!
您可以使用自定义资源类为特定角色指定 overcloud 节点。资源类将节点与部署角色匹配。默认情况下,所有节点都被分配为 baremetal 的资源类。
要在置备节点后更改分配给节点的资源类,您必须使用 scale down 过程取消置备节点,然后使用扩展过程使用新的资源类分配来重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
先决条件
- 您需要为 overcloud 执行裸机节点的初始置备。
流程
使用自定义资源类分配您要为角色指定的每个裸机节点:
(undercloud)$ openstack baremetal node set \ --resource-class <resource_class> <node>-
将
<resource_class> 替换为资源类的名称,如baremetal.CPU-PINNING。 -
将
<node>替换为裸机节点的 ID。
-
将
-
将角色添加到
overcloud-baremetal-deploy.yaml文件中(如果尚未定义)。 指定您要分配给角色节点的资源类:
- name: <role> count: 1 defaults: resource_class: <resource_class>-
将
<role> 替换为角色的名称。 -
将
<resource_class> 替换为在第 1 步中为资源类指定的名称。
-
将
- 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。
11.2.7. 通过匹配配置集为角色设计 overcloud 节点 复制链接链接已复制到粘贴板!
您可以使用配置集功能为特定角色指定 overcloud 节点。配置集与部署角色的节点功能匹配。
您还可以使用内省规则执行自动配置集分配。如需更多信息,请参阅配置自动配置集标记。
要在置备节点后更改分配给节点的配置集,您必须使用 scale down 过程取消置备节点,然后使用扩展流程使用新配置集分配重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
先决条件
- 您需要为 overcloud 执行裸机节点的初始置备。
流程
每次添加新节点功能时,现有节点功能都会被覆盖。因此,您必须检索每个注册节点的现有功能,以便再次设置它们:
$ openstack baremetal node show <node> \ -f json -c properties | jq -r .properties.capabilities通过将 profile:<profile> 添加到节点的现有功能,为您要与角色
配置集匹配的每个裸机节点分配配置集功能:(undercloud)$ openstack baremetal node set <node> \ --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"-
将
<node> 替换为裸机节点的名称或 ID。 -
将
<profile> 替换为与角色配置集匹配的配置集的名称。 -
将
<capability_1> 以及所有功能(直到<capability_n>)替换为在第 1 步中获取的每个功能。
-
将
-
将角色添加到
overcloud-baremetal-deploy.yaml文件中(如果尚未定义)。 定义您要分配给角色节点的配置集:
- name: <role> count: 1 defaults: profile: <profile>-
将
<role> 替换为角色的名称。 -
将
<profile> 替换为与节点功能匹配的配置集名称。
-
将
- 返回到 Provisioning 裸机节点,让 overcloud 完成置备过程。
11.2.8. 为对象存储服务配置整个磁盘分区 复制链接链接已复制到粘贴板!
完整磁盘镜像 overcloud-hardened-uefi-full 将分区为单独的卷。默认情况下,使用整个磁盘 overcloud 镜像部署的节点 /var 分区会自动增加,直到磁盘被完全分配为止。如果您使用 Object Storage 服务(swift),请根据磁盘大小以及 /var 和 /srv 的存储要求来配置 /srv 分区的大小。
先决条件
- 您需要为 overcloud 执行裸机节点的初始置备。
流程
使用
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%
- 返回到 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)。
- 裸机类别。
- 用于清理和置备的网络。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc将裸机置备服务引导接口设置为
redfish-virtual-media:(undercloud)$ openstack baremetal node set --boot-interface redfish-virtual-media <node>-
将
<node> 替换为节点的名称。
-
将
定义 ESP 镜像:
(undercloud)$ openstack baremetal node set --driver-info bootloader=<esp> <node>-
将
<esp> 替换为镜像服务(glance)镜像 UUID 或 ESP 镜像的 URL。 -
将
<node> 替换为节点的名称。
-
将
在裸机节点上创建一个端口,并将端口与裸机节点上 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 节 “标识根磁盘的属性”。
流程
从每个节点的硬件内省验证磁盘信息:
(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" } ]
-
将
使用唯一硬件属性为节点设置根磁盘:
(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
-
将 <
- 将每个节点的 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 属性来为没有持久名称的设备设置根磁盘,因为在节点引导时该值可能会改变。
11.2.13. 使用 overcloud-minimal 镜像来避免使用红帽订阅授权 复制链接链接已复制到粘贴板!
Red Hat OpenStack Platform (RHOSP)部署的默认镜像是 overcloud-hardened-uefi-full.qcow2。overcloud-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 绑定。
流程
-
打开
overcloud-baremetal-deploy.yaml文件。 为您要使用
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在
roles_data.yaml角色定义文件中,将rhsm_enforce参数设置为False。rhsm_enforce: False运行 provisioning 命令:
(undercloud)$ openstack overcloud node provision \ --stack stack \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yaml-
将
overcloud-baremetal-deployed.yaml环境文件传递给openstack overcloud deploy命令。