6.7. 使用裸机置备服务
查看有关裸机置备服务(ironic)配置的信息,然后将裸机置备服务用于 OpenShift control plane 上的 Red Hat OpenStack Services。
6.7.1. 裸机置备服务配置 复制链接链接已复制到粘贴板!
您可以使用配置片断配置裸机置备服务(ironic)。有关使用裸机置备服务配置 control plane 的更多信息,请参阅在 OpenShift 部署中自定义 Red Hat OpenStack Services。
一些 Bare Metal Provisioning 服务配置在 director Operator 中被覆盖,例如,PXE Loader 文件名通常在中间层被覆盖。您必须注意您在 OpenShift (RHOSO)部署中的 Red Hat OpenStack Services 中的设置。ironic-operator
应用合理的正常工作的默认配置,但如果您使用之前的配置覆盖它们,您的体验可能不是理想的选择,或者新的裸机置备服务无法操作。同样,可能需要其他配置,例如,如果您在 ironic.conf
文件中启用并使用额外的硬件类型。
合理的默认值模型包括常用的硬件类型和驱动程序接口。例如,redfish-virtual-media
引导接口和 ramdisk
部署接口会被默认启用。如果在使用完成后添加新裸机节点,则驱动程序接口选择会根据配置中的优先级顺序进行。如果您没有在节点创建请求或 ironic.conf
文件中作为已建立的默认值,则驱动程序接口选择会根据配置中的优先级顺序进行。
某些配置参数不需要在单独节点级别设置,如网络 UUID 值,或者在 ironic.conf
文件中集中配置,因为设置控制安全行为。
务必要维护您在之前部署到新部署时配置并格式化为 [section]
和参数名称的以下参数。如果设置,则管理之前配置中底层的行为和值的参数将使用特定的值。
- [neutron]cleaning_network
- [neutron]provisioning_network
- [neutron]rescuing_network
- [neutron]inspection_network
- [conductor]automated_clean
- [deploy]erase_devices_priority
- [deploy]erase_devices_metadata_priority
- [conductor]force_power_state_during_sync
您可以在节点上单独设置以下参数。但是,您可以选择使用嵌入式配置选项来避免在创建和管理裸机节点时单独设置参数。检查您之前的 ironic.conf
文件以查找这些参数,如果设置,请应用特定的覆盖配置。
- [conductor]bootloader
- [conductor]rescue_ramdisk
- [conductor]rescue_kernel
- [conductor]deploy_kernel
- [conductor]deploy_ramdisk
kernel_append_params
(以前在 [pxe]
和 [redfish]
配置部分中的 pxe_append_params
)的实例用来为部署 ramdisk 应用 "console" 等引导选项,因此通常必须更改。
您不能迁移使用 ironic.conf
文件 enabled_hardware_types
参数设置的硬件类型,以及以 staging-
开头的硬件类型驱动程序接口。
6.7.2. 部署裸机置备服务 复制链接链接已复制到粘贴板!
要部署裸机置备服务(ironic),您可以修补禁用 Bare Metal Provisioning 服务的现有 OpenStackControlPlane
自定义资源(CR)。ironic-operator
应用配置并启动裸机置备服务。在服务运行后,裸机置备服务会自动开始轮询它所管理的裸机节点的电源状态。
默认情况下,裸机置备服务的 RHOSO 版本 18.0 及更新的版本包括新的多租户感知基于角色的访问控制(RBAC)模型。因此,在采用 Bare Metal Provisioning 服务后,运行 openstack baremetal node list
命令时可能会缺少裸机节点。您的节点不会被删除。由于 RBAC 模型中的访问限制增加,您必须识别哪个项目拥有缺少的裸机节点,并设置每个缺少的裸机节点上的 owner
字段。
先决条件
- 您已将服务数据库导入到 control plane 数据库中。
在 RHOSO 18.0 中禁用了裸机置备服务。以下命令应该返回字符串
false
:oc get openstackcontrolplanes.core.openstack.org <name> -o jsonpath='{.spec.ironic.enabled}'
$ oc get openstackcontrolplanes.core.openstack.org <name> -o jsonpath='{.spec.ironic.enabled}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<
name> 替换为现有OpenStackControlPlane
CR 的名称,如openstack-control-plane
。
-
将
Identity 服务(keystone)、网络服务(neutron)和镜像服务(glance)正常运行。
注意如果您在裸机作为服务配置中使用裸机置备服务,在采用裸机置备服务前不要采用 Compute 服务(nova)。
- 对于裸机置备服务编排器服务,服务必须能够访问配置为由裸机置备服务管理的硬件的 Baseboard Management Controller。如果此硬件无法访问,节点可能会进入 "maintenance" 状态,并在稍后恢复连接前不可用。
您已在本地下载
ironic.conf
文件:$CONTROLLER1_SSH cat /var/lib/config-data/puppet-generated/ironic/etc/ironic/ironic.conf > ironic.conf
$CONTROLLER1_SSH cat /var/lib/config-data/puppet-generated/ironic/etc/ironic/ironic.conf > ironic.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此配置文件必须来自其中一个 Controller 节点,而不是 director Operator undercloud 节点。director Operator undercloud 节点使用不同的配置进行操作,这些配置在采用 Overcloud Ironic 部署时不适用。
-
如果使用 Ironic Inspector 服务,则需要
IronicInspectorSubnets
director Operator 参数的值。使用相同的值在 RHOSO 环境中填充dhcpRanges
参数。 您已定义以下 shell 变量:将以下示例值替换为应用到您的环境的值:
alias openstack="oc exec -t openstackclient -- openstack"
$ alias openstack="oc exec -t openstackclient -- openstack"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
修补
OpenStackControlPlane
自定义资源(CR)以部署裸机置备服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果使用 IPv6,请将负载均衡器 IP 更改为环境中的负载均衡器 IP,如
metallb.universe.tf/loadBalancerIPs: fd00:bbbb::80
。
等待裸机置备服务 control plane 服务 CR 就绪:
oc wait --for condition=Ready --timeout=300s ironics.ironic.openstack.org ironic
$ oc wait --for condition=Ready --timeout=300s ironics.ironic.openstack.org ironic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证单个服务是否已就绪:
oc wait --for condition=Ready --timeout=300s ironicapis.ironic.openstack.org ironic-api oc wait --for condition=Ready --timeout=300s ironicconductors.ironic.openstack.org ironic-conductor oc wait --for condition=Ready --timeout=300s ironicinspectors.ironic.openstack.org ironic-inspector oc wait --for condition=Ready --timeout=300s ironicneutronagents.ironic.openstack.org ironic-ironic-neutron-agent
$ oc wait --for condition=Ready --timeout=300s ironicapis.ironic.openstack.org ironic-api $ oc wait --for condition=Ready --timeout=300s ironicconductors.ironic.openstack.org ironic-conductor $ oc wait --for condition=Ready --timeout=300s ironicinspectors.ironic.openstack.org ironic-inspector $ oc wait --for condition=Ready --timeout=300s ironicneutronagents.ironic.openstack.org ironic-ironic-neutron-agent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 provisioning、清理和救援网络上的 DNS Nameservers:
注意要使名称解析用于裸机置备服务操作,您必须将 DNS 名称服务器设置为使用 RHOSO control plane 中的内部 DNS 服务器:
openstack subnet set --dns-nameserver 192.168.122.80 provisioning-subnet
$ openstack subnet set --dns-nameserver 192.168.122.80 provisioning-subnet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证节点列表中没有裸机置备服务节点:
openstack baremetal node list
$ openstack baremetal node list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果
openstack baremetal node list
命令输出报告了不正确的电源状态,请等待几分钟,然后重新运行命令以查看输出是否与被管理的硬件的实际状态同步。Bare Metal Provisioning 服务检查和协调裸机节点的电源状态所需的时间取决于通过replicas
参数的操作编排器,并在采用裸机置备服务部署中存在这些时间。如果
openstack baremetal node list
命令中缺少任何裸机置备服务节点,请临时禁用新的 RBAC 策略来再次查看节点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用此配置后,Operator 会重启 Ironic API 服务,并禁用默认启用的新 RBAC 策略。
查看没有分配所有者的裸机节点:
openstack baremetal node list --long -c UUID -c Owner -c 'Provisioning State'
$ openstack baremetal node list --long -c UUID -c Owner -c 'Provisioning State'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将没有所有者的所有裸机节点分配给新项目,如 admin 项目:
ADMIN_PROJECT_ID=$(openstack project show -c id -f value --domain default admin) for node in $(openstack baremetal node list -f json -c UUID -c Owner | jq -r '.[] | select(.Owner == null) | .UUID'); do openstack baremetal node set --owner $ADMIN_PROJECT_ID $node; done
ADMIN_PROJECT_ID=$(openstack project show -c id -f value --domain default admin) for node in $(openstack baremetal node list -f json -c UUID -c Owner | jq -r '.[] | select(.Owner == null) | .UUID'); do openstack baremetal node set --owner $ADMIN_PROJECT_ID $node; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过删除
customServiceConfig
部分或将customServiceConfig
部分中的以下值设置为true
来重新应用默认 RBAC。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证端点列表:
openstack endpoint list |grep ironic
$ openstack endpoint list |grep ironic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证裸机节点列表:
openstack baremetal node list
$ openstack baremetal node list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow