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}'-
将
<name> 替换为现有OpenStackControlPlaneCR 的名称,如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注意此配置文件必须来自其中一个 Controller 节点,而不是 director Operator undercloud 节点。director Operator undercloud 节点使用不同的配置进行操作,这些配置在采用 Overcloud Ironic 部署时不适用。
-
如果使用 Ironic Inspector 服务,则需要
IronicInspectorSubnetsdirector Operator 参数的值。使用相同的值在 RHOSO 环境中填充dhcpRanges参数。 您已定义以下 shell 变量:将以下示例值替换为应用到您的环境的值:
$ alias openstack="oc exec -t openstackclient -- openstack"
流程
修补
OpenStackControlPlane自定义资源(CR)以部署裸机置备服务:$ oc patch openstackcontrolplane openstack --type=merge --patch ' spec: ironic: enabled: true template: rpcTransport: oslo databaseInstance: openstack ironicAPI: replicas: 1 override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.801 spec: type: LoadBalancer ironicConductors: - replicas: 1 networkAttachments: - baremetal provisionNetwork: baremetal storageRequest: 10G customServiceConfig: | [neutron] cleaning_network=<cleaning network uuid> provisioning_network=<provisioning network uuid> rescuing_network=<rescuing network uuid> inspection_network=<introspection network uuid> [conductor] automated_clean=true ironicInspector: replicas: 1 inspectionNetwork: baremetal networkAttachments: - baremetal dhcpRanges: - name: inspector-0 cidr: 172.20.1.0/24 start: 172.20.1.190 end: 172.20.1.199 gateway: 172.20.1.1 serviceUser: ironic-inspector databaseAccount: ironic-inspector passwordSelectors: database: IronicInspectorDatabasePassword service: IronicInspectorPassword ironicNeutronAgent: replicas: 1 rabbitMqClusterName: rabbitmq secret: osp-secret '- 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 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更新 provisioning、清理和救援网络上的 DNS Nameservers:
注意要使名称解析用于裸机置备服务操作,您必须将 DNS 名称服务器设置为使用 RHOSO control plane 中的内部 DNS 服务器:
$ openstack subnet set --dns-nameserver 192.168.122.80 provisioning-subnet验证节点列表中没有裸机置备服务节点:
$ openstack baremetal node list重要如果
openstack baremetal node list命令输出报告了不正确的电源状态,请等待几分钟,然后重新运行命令以查看输出是否与被管理的硬件的实际状态同步。Bare Metal Provisioning 服务检查和协调裸机节点的电源状态所需的时间取决于通过replicas参数的操作编排器,并在采用裸机置备服务部署中存在这些时间。如果
openstack baremetal node list命令中缺少任何裸机置备服务节点,请临时禁用新的 RBAC 策略来再次查看节点:$ oc patch openstackcontrolplane openstack --type=merge --patch ' spec: ironic: enabled: true template: databaseInstance: openstack ironicAPI: replicas: 1 customServiceConfig: | [oslo_policy] enforce_scope=false enforce_new_defaults=false '应用此配置后,Operator 会重启 Ironic API 服务,并禁用默认启用的新 RBAC 策略。
查看没有分配所有者的裸机节点:
$ openstack baremetal node list --long -c UUID -c Owner -c 'Provisioning State'将没有所有者的所有裸机节点分配给新项目,如 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通过删除
customServiceConfig部分或将customServiceConfig部分中的以下值设置为true来重新应用默认 RBAC。例如:$ oc patch openstackcontrolplane openstack --type=merge --patch ' spec: ironic: enabled: true template: databaseInstance: openstack ironicAPI: replicas: 1 customServiceConfig: | [oslo_policy] enforce_scope=true enforce_new_defaults=true '
验证
验证端点列表:
$ openstack endpoint list |grep ironic验证裸机节点列表:
$ openstack baremetal node list