7.2. 置备裸机 overcloud 节点
要配置 Red Hat OpenStack Platform (RHOSP)环境,您必须执行以下任务:
- 为 overcloud 注册裸机节点。
为 director 提供裸机节点硬件清单。
注意由于网络引导装载程序的限制,RHOSP 不支持使用安全引导机制进行内省。如果 overcloud 节点部署了 overcloud,则可能会在部署 overcloud 后启用安全引导(如果 overcloud 节点为
overcloud-hardened-uefi-full.qcow2)提供的 overcloud 镜像。- 在节点定义文件中配置裸机节点的数量、属性和网络布局。
- 为每个裸机节点分配一个与节点匹配的资源类,并将其指定角色分配。
您还可以执行额外的可选任务,如匹配配置集来指定 overcloud 节点。
7.2.1. 为 overcloud 注册节点 复制链接链接已复制到粘贴板!
director 需要节点定义模板来指定节点的硬件和电源管理详情。您可以使用 JSON 格式、nodes.json 或 YAML 格式 nodes.yaml 创建此模板。
流程
创建名为
nodes.json或nodes.yaml的模板,它将列出您的节点。使用以下 JSON 和 YAML 模板示例了解如何创建节点定义模板的结构:示例 JSON 模板
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 YAML 模板
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此模板包含以下属性:
- 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
$ source ~/stackrc (undercloud)$ openstack overcloud node import --validate-only ~/nodes.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将模板文件保存到
stack用户的主目录(/home/stack/nodes.json)。 将模板导入到 director,将每个节点从模板注册到 director:
openstack overcloud node import ~/nodes.json
(undercloud)$ openstack overcloud node import ~/nodes.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 等待节点完成注册和配置。完成后,确认 director 已成功注册节点:
openstack baremetal node list
(undercloud)$ openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.2. 创建裸机节点硬件的清单 复制链接链接已复制到粘贴板!
director 需要 Red Hat OpenStack Platform (RHOSP)部署中节点的硬件清单,用于配置集标记、基准测试和手动根磁盘分配。
您可以使用以下方法之一向 director 提供硬件清单:
- 自动 :您可以使用 director 的内省过程,从每个节点收集硬件信息。这个过程在每个节点上引导内省代理。内省代理从节点收集硬件数据并将数据送回 director。director 将硬件数据存储在 OpenStack 内部数据库中。
手动:您可以为每个裸机手动配置基本硬件清单。此清单存储在裸机置备服务(ironic)中,用于管理和部署裸机。
注意由于网络引导装载程序的限制,RHOSP 不支持使用安全引导机制进行内省。如果 overcloud 节点部署了 overcloud,则可能会在部署 overcloud 后启用安全引导(如果 overcloud 节点为
overcloud-hardened-uefi-full.qcow2)提供的 overcloud 镜像。
与设置裸机置备服务端口的手动方法相比,director 自动内省过程具有以下优点:
-
内省记录在硬件信息中的所有连接端口,包括用于在
nodes.yaml中尚未配置用于 PXE 引导的端口。 -
如果属性可以使用 LLDP 发现,则内省会为每个端口设置
local_link_connection属性。使用手动方法时,您必须在注册节点时为每个端口配置local_link_connection。 -
在部署 spine-and-leaf 或 DCN 架构时,内省为裸机置备服务端口设置
physical_network属性。
7.2.2.1. 使用 director 内省来收集裸机节点硬件信息 复制链接链接已复制到粘贴板!
在将物理机注册为裸机节点后,您可以使用 director 内省自动添加其硬件详情并为每个以太网 MAC 地址创建端口。
作为自动内省的替代选择,您可以手动为 director 提供裸机节点的硬件信息。如需更多信息,请参阅 手动配置裸机节点硬件信息。
director 内省不支持安全引导。
先决条件
- 您已为 overcloud 注册了裸机节点。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 pre-introspection 验证组来检查内省要求:
validation run --group pre-introspection \ --inventory <inventory_file>
(undercloud)$ validation run --group pre-introspection \ --inventory <inventory_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<inventory_file> 替换为 Ansible 清单文件的名称和位置,如~/tripleo-deploy/undercloud/tripleo-ansible-inventory.yaml。注意当您运行验证时,输出中的
Reasons列仅限于 79 个字符。要查看验证结果已满,请查看验证日志文件。
- 查看验证报告的结果。
可选:查看特定验证的详细输出:
validation history get --full <UUID>
(undercloud)$ validation history get --full <UUID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<UUID> 替换为您要查看的报告中特定验证的 UUID。重要FAILED验证不会阻止您部署或运行 Red Hat OpenStack Platform。但是,FAILED验证可能会显示生产环境中潜在的问题。
检查每个节点的硬件属性。您可以检查所有节点或特定节点的硬件属性:
检查所有节点的硬件属性:
openstack overcloud node introspect --all-manageable --provide
(undercloud)$ openstack overcloud node introspect --all-manageable --provideCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
--all-manageable选项仅内省处于受管理状态的节点。在此示例中,所有节点都处于受管理状态。 -
使用
--provide选项在内省后将所有节点重置为available状态。
-
使用
检查特定节点的硬件属性:
openstack overcloud node introspect --provide <node1> [node2] [noden]
(undercloud)$ openstack overcloud node introspect --provide <node1> [node2] [noden]Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
--provide选项,在内省后将所有指定的节点重置为available状态。 -
将
<node1>,[node2], 及所有节点(直到[noden])替换为您要内省的每个节点的 UUID。
-
使用
在一个单独的终端窗口中监控内省进度日志:
sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.log
(undercloud)$ sudo tail -f /var/log/containers/ironic-inspector/ironic-inspector.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要确保内省进程已运行完。内省通常需要 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"
$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果裸机节点上的端口的 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
$ openstack baremetal port set <port_uuid> \ --local-link-connection switch_id=52:54:00:00:00:00 \ --local-link-connection port_id=p0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 “Local Link Connection” 字段是否包含虚拟数据:
openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"
$ openstack baremetal port list --long -c UUID -c "Node UUID" -c "Local Link Connection"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
内省完成后,所有节点都会变为 available 状态。
7.2.2.2. 手动配置裸机节点硬件信息 复制链接链接已复制到粘贴板!
将物理机注册为裸机节点后,您可以手动添加其硬件详情,并为每个以太网 MAC 地址创建裸机端口。在部署 overcloud 之前,您必须至少创建一个裸机端口。
作为手动内省的替代方法,您可以使用自动 director 内省流程来收集裸机节点的硬件信息。如需更多信息,请参阅使用 director 内省来收集裸机节点硬件信息。
先决条件
- 您已为 overcloud 注册了裸机节点。
-
您已为
nodes.json中注册的每个端口配置了local_link_connection。有关更多信息 ,请参阅为 overcloud 注册节点。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 指定部署内核并为节点驱动程序部署 ramdisk:
openstack baremetal node set <node> \ --driver-info deploy_kernel=<kernel_file> \ --driver-info deploy_ramdisk=<initramfs_file>
(undercloud)$ openstack baremetal node set <node> \ --driver-info deploy_kernel=<kernel_file> \ --driver-info deploy_ramdisk=<initramfs_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node>替换为裸机节点的 ID。 -
将
<kernel_file> 替换为.kernel镜像的路径,例如file:///var/lib/ironic/httpboot/agent.kernel。 -
将
<initramfs_file> 替换为.initramfs镜像的路径,例如file:///var/lib/ironic/httpboot/agent.ramdisk。
-
将
更新节点属性以匹配节点上的硬件规格:
openstack baremetal node set <node> \ --property cpus=<cpu> \ --property memory_mb=<ram> \ --property local_gb=<disk> \ --property cpu_arch=<arch>
(undercloud)$ openstack baremetal node set <node> \ --property cpus=<cpu> \ --property memory_mb=<ram> \ --property local_gb=<disk> \ --property cpu_arch=<arch>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node>替换为裸机节点的 ID。 -
将
<cpu> 替换为 CPU 数量。 -
将 &
lt;ram> 替换为 RAM (以 MB 为单位)。 -
将
<disk>替换为磁盘大小(以 GB 为单位)。 -
将
<arch> 替换为构架类型。
-
将
可选:为每个节点指定 IPMI 密码套件:
openstack baremetal node set <node> \ --driver-info ipmi_cipher_suite=<version>
(undercloud)$ openstack baremetal node set <node> \ --driver-info ipmi_cipher_suite=<version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node>替换为裸机节点的 ID。 将
<version> 替换为节点上要使用的密码套件版本。设置为以下有效值之一:-
3- 节点使用带有 SHA1 密码套件的 AES-128。 -
17- 节点使用带有 SHA256 密码套件的 AES-128。
-
-
将
可选:如果您有多个磁盘,请设置 root 设备提示,以通知部署 ramdisk 用于部署的磁盘:
openstack baremetal node set <node> \ --property root_device='{"<property>": "<value>"}'(undercloud)$ openstack baremetal node set <node> \ --property root_device='{"<property>": "<value>"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<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 地址的端口来告知节点网卡的裸机置备服务:
openstack baremetal port create --node <node_uuid> <mac_address>
(undercloud)$ openstack baremetal port create --node <node_uuid> <mac_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node_uuid>替换为裸机节点的唯一 ID。 -
将
<mac_address> 替换为用于 PXE 引导的 NIC 的 MAC 地址。
-
将
验证节点的配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证输出结果
Result表示以下内容:-
false:接口验证失败。如果提供的原因缺少instance_info.image_source参数,这可能是因为在置备过程中填充,因此此时还没有设置它。如果您使用整个磁盘镜像,则可能需要设置image_source来传递验证。 -
true:接口已通过验证。 -
None: 接口不支持您的驱动。
-
7.2.3. 为 overcloud 置备裸机节点 复制链接链接已复制到粘贴板!
要置备裸机节点,您可以定义您要以 YAML 格式的节点定义文件部署的裸机节点的数量和属性,并为这些节点分配 overcloud 角色。您还定义节点的网络布局。
置备过程会从节点定义文件创建一个 heat 环境文件。此 heat 环境文件包含您在节点定义文件中配置的节点规格,包括节点数、预测节点放置、自定义镜像和自定义 NIC。当您部署 overcloud 时,请将此文件包括在部署命令中。置备过程还会为每个节点定义的所有网络置备端口资源,或者在节点定义文件中角色。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
- 裸机节点已注册、内省并可用于调配和部署。如需更多信息,请参阅为 overcloud 注册节点 和 创建裸机节点硬件清单。
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
overcloud-baremetal-deploy.yaml节点定义文件,并为您要置备的每个角色定义节点数。例如,要置备三个 Controller 节点和三个 Compute 节点,请在overcloud-baremetal-deploy.yaml文件中添加以下配置:- name: Controller count: 3 - name: Compute count: 3
- name: Controller count: 3 - name: Compute count: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:配置预测节点放置。例如,使用以下配置在节点
node00、node01和node02上置备三个 Controller 节点,以及node04、node05和node06上的三个 Compute 节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 默认情况下,置备过程使用
overcloud-hardened-uefi-full.qcow2镜像。您可以通过指定镜像的本地或远程 URL 来更改特定节点上使用的镜像,或用于角色的所有节点的镜像。以下示例将镜像改为本地 QCOW2 镜像:特定节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 角色的所有节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为角色的所有节点定义网络布局,或为特定节点定义网络布局:
特定节点
以下示例为特定 Controller 节点置备网络,并为内部 API 网络的节点分配可预测的 IP:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要从 Red Hat OpenStack Platform 17.1 开始,不再使用
ips-from-pool.yaml文件为节点分配可预测的 IP。您必须使用裸机定义文件中的fixed_ip属性来指定网络的 IP 地址。如需更多信息,请参阅 裸机节点置备属性。
角色的所有节点
以下示例为 Controller 和 Compute 角色置备网络:
+
+ <1> 您可以使用位于 /usr/share/ansible/roles/tripleo_network_config/templates 中的示例 NIC 模板在本地环境文件目录中创建自己的 NIC 模板。
可选:如果默认磁盘分区的大小不满足您的要求,请配置磁盘分区大小。例如:
/var/log分区的默认分区大小为 10 GB。考虑您的日志存储和保留要求,以确定 10 GB 是否满足您的要求。如果您需要为日志存储增加分配的磁盘大小,请在节点定义文件中添加以下配置来覆盖默认值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<log_size> 替换为要分配给日志文件的磁盘大小。
-
将
-
如果您使用 Object Storage 服务(swift)和整个磁盘 overcloud 镜像,
overcloud-hardened-uefi-full,您需要根据磁盘大小以及/var和/srv的存储要求来配置/srv分区的大小。如需更多信息,请参阅为对象存储服务配置整个磁盘分区。 - 可选:使用自定义资源类或配置集功能为特定的角色指定 overcloud 节点。如需更多信息,请参阅通过匹配资源类并为角色指定 overcloud 节点和通过匹配配置集为角色设计 overcloud 节点。
- 定义您要分配给节点的任何其他属性。有关您可以在节点定义文件中配置节点属性的属性的更多信息,请参阅 裸机节点置备属性。有关节点定义文件的示例,请参阅 节点定义文件 示例。
置备 overcloud 节点:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:包含
--templates选项以使用您自己的模板,而不是位于/usr/share/openstack-tripleo-heat-templates中的默认模板。将<templates_directory>替换为包含模板的目录的路径。 -
将
<stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为overcloud。 -
包含
--network-config可选参数,为cli-overcloud-node-network-config.yamlAnsible playbook 提供网络定义。cli-overcloud-node-network-config.yamlplaybook 使用os-net-config工具在部署的节点上应用网络配置。如果不使用--network-config来提供网络定义,则必须在network-environment.yaml文件中配置{{role.name}}NetworkConfigTemplate参数,否则会使用默认网络定义。 -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。 -
将
<node_definition_file> 替换为节点定义文件的名称,如overcloud-baremetal-deploy.yaml。
-
可选:包含
在一个单独的终端中监控置备进度:
watch openstack baremetal node list
(undercloud)$ watch openstack baremetal node listCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
当置备成功后,节点状态将从
available变为active。 - 如果因为节点硬件或网络配置失败,节点置备失败,您可以在再次运行置备步骤前删除失败的节点。如需更多信息,请参阅从节点定义文件中删除失败的裸机节点。
-
当置备成功后,节点状态将从
使用
metalsmith工具获取节点的统一视图,包括分配和端口:metalsmith list
(undercloud)$ metalsmith listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证节点与主机名的关联:
openstack baremetal allocation list
(undercloud)$ openstack baremetal allocation listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
后续步骤
7.2.4. 裸机节点置备属性 复制链接链接已复制到粘贴板!
使用下表了解配置节点属性的可用属性,以及使用 openstack baremetal node provision 命令置备裸机节点时要使用的值。
- 角色属性:使用角色属性来定义各个角色。
- 每个角色的默认和实例属性: 使用 default 或 instance 属性指定从可用节点池中分配节点的选择条件,并在裸机节点上设置属性和网络配置属性。
有关创建 裸机定义文件的详情,请参考为 overcloud 置备裸机节点。
| 属性 | 值 |
|---|---|
|
| (必需)角色名称。 |
|
|
要为这个角色置备的节点数量。默认值为 |
|
|
|
|
|
用于为特定节点指定属性的值的字典。有关 |
|
|
覆盖这个角色的默认主机名格式。默认生成的主机名来自 overcloud 堆栈名称、角色和递增索引,都小写。例如,Controller 角色的默认格式为 |
|
|
Ansible playbook 和 Ansible 变量的值字典。在节点网络配置之前,playbook 会根据节点调配后针对角色实例运行。有关指定 Ansible playbook 的更多信息,请参阅 |
| 属性 | 值 |
|---|---|
|
|
( |
|
|
( |
|
|
要在节点上置备的镜像的详情。有关支持的 |
|
| 选择与节点功能匹配的条件。 |
|
|
将 data 和 first-boot 命令添加到传递给节点的 config-drive 中。如需更多信息,请参阅 注意
仅将 |
|
|
设置为 |
|
|
代表实例网络的字典列表。有关配置网络属性的更多信息,请参阅 |
|
|
链接到角色或实例的网络配置文件。有关配置到网络配置文件的链接的更多信息,请参阅 |
|
| 针对配置文件匹配的选择条件。如需更多信息,请参阅 根据匹配的配置集为角色指定 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 变量。使用以下语法指定额外变量: ansible_playbooks:
- playbook: a_playbook.yaml
extra_vars:
param1: value1
param2: value2
例如,要增大使用整个磁盘 overcloud 镜像 |
7.2.5. 从节点定义文件中删除失败的裸机节点 复制链接链接已复制到粘贴板!
如果因为节点硬件或网络配置失败,节点置备失败,您可以在再次运行置备步骤前删除失败的节点。要删除在置备过程中失败的裸机节点,请在节点定义文件中标记您要从堆栈中删除的节点,并在置备正常工作的裸机节点前取消置备节点。
先决条件
- 已安装 undercloud。如需更多信息,请参阅安装 director。
- 由于节点硬件故障,裸机节点置备会失败。
流程
查找
stackrcundercloud 凭据文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
overcloud-baremetal-deploy.yaml节点定义文件。 缩减节点分配给的角色的
count参数。例如,以下配置更新ObjectStorage角色的 count 参数,以反映专用于ObjectStorage的节点数量被减少为 3:- name: ObjectStorage count: 3
- name: ObjectStorage count: 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
定义您要从堆栈中删除的节点的
主机名和名称(如果尚未在角色的instances属性中定义)。 将 attribute
provisioned: false添加到您要删除的节点。例如,要从堆栈中删除节点overcloud-objectstorage-1,请在overcloud-baremetal-deploy.yaml文件中包含以下代码片段:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 取消置备裸机节点:
openstack overcloud node unprovision \ --stack <stack> \ --network-ports \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node unprovision \ --stack <stack> \ --network-ports \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为overcloud。
-
将
置备 overcloud 节点以生成更新的 heat 环境文件,以包括在部署命令中:
openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<deployment_file>替换为用于部署命令生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-baremetal-deployed.yaml。
-
将
7.2.6. 通过匹配资源类为角色设计 overcloud 节点 复制链接链接已复制到粘贴板!
您可以使用自定义资源类为特定角色指定 overcloud 节点。资源类与节点匹配以部署角色。默认情况下,所有节点都被分配 baremetal 的资源类。
要在置备节点后更改分配给节点的资源类,您必须使用缩减流程取消置备节点,然后使用扩展步骤使用新资源类分配重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
先决条件
- 为 overcloud 执行裸机节点的初始置备。
流程
使用自定义资源类分配您要为角色指定的每个裸机节点:
openstack baremetal node set \ --resource-class <resource_class> <node>
(undercloud)$ openstack baremetal node set \ --resource-class <resource_class> <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<resource_class> 替换为资源类的名称,例如baremetal.CPU-PINNING。 -
将
<node>替换为裸机节点的 ID。
-
将
-
将角色添加到
overcloud-baremetal-deploy.yaml文件中(如果尚未定义)。 指定您要分配给角色节点的资源类:
- name: <role> count: 1 defaults: resource_class: <resource_class>- name: <role> count: 1 defaults: resource_class: <resource_class>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<role> 替换为角色的名称。 -
将
<resource_class> 替换为在第 1 步中为资源类指定的名称。
-
将
- 返回到 为 overcloud 置备裸机节点 以完成置备过程。
7.2.7. 根据匹配的配置集为角色设计 overcloud 节点 复制链接链接已复制到粘贴板!
您可以使用配置集功能为特定角色指定 overcloud 节点。配置集与节点功能与部署角色匹配。
您还可以使用内省规则执行自动配置集分配。如需更多信息,请参阅配置自动配置集标记。
要在置备节点后更改分配给节点的配置集,您必须使用缩减流程取消置备节点,然后使用扩展步骤使用新配置集分配重新置备节点。有关更多信息,请参阅 扩展 overcloud 节点。
先决条件
- 为 overcloud 执行裸机节点的初始置备。
流程
每次添加新节点功能时,现有节点功能都会覆盖。因此,您必须检索每个注册节点的现有功能,以便再次设置它们:
openstack baremetal node show <node> \ -f json -c properties | jq -r .properties.capabilities
$ openstack baremetal node show <node> \ -f json -c properties | jq -r .properties.capabilitiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过将 profile:<profile> 添加到节点的现有功能,给您要与角色
配置集匹配的每个裸机节点分配配置集功能:openstack baremetal node set <node> \ --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"
(undercloud)$ openstack baremetal node set <node> \ --property capabilities="profile:<profile>,<capability_1>,...,<capability_n>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node> 替换为裸机节点的名称或 ID。 -
将
<profile> 替换为与角色配置集匹配的配置集名称。 -
将
<capability_1> 以及所有功能(直到<capability_n>)替换为在第 1 步中获得的每个功能。
-
将
-
将角色添加到
overcloud-baremetal-deploy.yaml文件中(如果尚未定义)。 定义您要分配给角色节点的配置集:
- name: <role> count: 1 defaults: profile: <profile>- name: <role> count: 1 defaults: profile: <profile>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<role> 替换为角色的名称。 -
将
<profile> 替换为与节点功能匹配的配置集名称。
-
将
- 返回到 为 overcloud 置备裸机节点 以完成置备过程。
7.2.8. 为对象存储服务配置完整磁盘分区 复制链接链接已复制到粘贴板!
整个磁盘镜像 overcloud-hardened-uefi-full 会被分区到单独的卷中。默认情况下,使用整个磁盘 overcloud 镜像部署的节点的 /var 分区会自动增加,直到磁盘被完全分配为止。如果您使用 Object Storage 服务(swift),请根据您的磁盘大小以及 /var 和 /srv 的存储要求来配置 /srv 分区的大小。
先决条件
- 为 overcloud 执行裸机节点的初始置备。
流程
使用
role_growvols_args作为overcloud-baremetal-deploy.yaml节点定义文件中的 Ansible playbook 定义中的额外 Ansible 变量配置/srv和/var分区。将/srv或/var设置为一个绝对大小(以 GB 为单位),并将其他大小设置为 100% 以使用剩余的磁盘空间。以下示例配置将
/srv设置为在 Controller 节点上部署的对象存储服务的绝对路径,将/var设置为 100% 以使用剩余的磁盘空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例配置将
/var设置为绝对大小,将/srv设置为 100%,以使用 Object Storage 服务的 Object Storage 节点的剩余磁盘空间:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 返回到 为 overcloud 置备裸机节点 以完成置备过程。
7.2.9. 节点定义文件示例 复制链接链接已复制到粘贴板!
以下示例节点定义文件定义了三个 Controller 节点和三个 Compute 节点及其使用的默认网络的预测节点放置。这个示例还演示了如何定义具有根据资源类或节点功能配置集指定节点的自定义角色。
7.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
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Bare Metal Provisioning 服务引导接口设置为
redfish-virtual-media:openstack baremetal node set --boot-interface redfish-virtual-media <node>
(undercloud)$ openstack baremetal node set --boot-interface redfish-virtual-media <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node> 替换为节点的名称。
-
将
定义 ESP 镜像:
openstack baremetal node set --driver-info bootloader=<esp> <node>
(undercloud)$ openstack baremetal node set --driver-info bootloader=<esp> <node>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<esp> 替换为镜像服务(glance)镜像 UUID 或 ESP 镜像的 URL。 -
将
<node> 替换为节点的名称。
-
将
在裸机节点上创建一个端口,并将端口与裸机节点上 NIC 的 MAC 地址关联:
openstack baremetal port create --pxe-enabled True \ --node <node_uuid> <mac_address>
(undercloud)$ openstack baremetal port create --pxe-enabled True \ --node <node_uuid> <mac_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node_uuid> 替换为裸机节点的 UUID。 -
将
<mac_address> 替换为裸机节点中 NIC 的 MAC 地址。
-
将
7.2.11. 为多磁盘 Ceph 集群定义根磁盘 复制链接链接已复制到粘贴板!
Ceph Storage 节点通常使用多个磁盘。director 必须在多个磁盘配置中识别根磁盘。在置备过程中,overcloud 镜像被写入根磁盘。
硬件属性用于识别根磁盘。有关可以用来识别根磁盘的属性的更多信息,请参阅 标识根磁盘的属性。
流程
从每个节点的硬件内省验证磁盘信息:
openstack baremetal introspection data save <node_uuid> --file <output_file_name>
(undercloud)$ openstack baremetal introspection data save <node_uuid> --file <output_file_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<node_uuid> 替换为节点的 UUID。 将 <
output_file_name> 替换为包含节点内省输出的文件的名称。例如,一个节点的数据可能会显示 3 个磁盘:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
使用唯一硬件属性为节点设置根磁盘:
(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 镜像并将其写入根磁盘。
7.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 属性为没有持久名称的设备设置根磁盘,因为该值可在节点引导时更改。
7.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-minimal镜像和相关内核和 ramdisk 上传到 undercloud 上的/var/lib/ironic/images/中。以下是上传文件的示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
overcloud-baremetal-deploy.yaml文件。 为您要使用
overcloud-minimal镜像的节点添加或更新image属性。您可以将特定节点上的镜像设置为overcloud-minimal,或将角色的所有节点设置为 overcloud-minimal:特定节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 角色的所有节点
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
roles_data.yaml角色定义文件中,将rhsm_enforce参数设置为False。rhsm_enforce: False
rhsm_enforce: FalseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 provisioning 命令:
openstack overcloud node provision \ --stack stack \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yaml
(undercloud)$ openstack overcloud node provision \ --stack stack \ --output /home/stack/templates/overcloud-baremetal-deployed.yaml \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
overcloud-baremetal-deployed.yaml环境文件传递给openstack overcloud deploy命令。