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}'
    Copy to Clipboard Toggle word wrap
    • < 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
    Copy to Clipboard Toggle word wrap
    注意

    此配置文件必须来自其中一个 Controller 节点,而不是 director Operator undercloud 节点。director Operator undercloud 节点使用不同的配置进行操作,这些配置在采用 Overcloud Ironic 部署时不适用。

  • 如果使用 Ironic Inspector 服务,则需要 IronicInspectorSubnets director Operator 参数的值。使用相同的值在 RHOSO 环境中填充 dhcpRanges 参数。
  • 您已定义以下 shell 变量:将以下示例值替换为应用到您的环境的值:

    $ alias openstack="oc exec -t openstackclient -- openstack"
    Copy to Clipboard Toggle word wrap

流程

  1. 修补 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.80 
    1
    
                  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
    '
    Copy to Clipboard Toggle word wrap
    1
    如果使用 IPv6,请将负载均衡器 IP 更改为环境中的负载均衡器 IP,如 metallb.universe.tf/loadBalancerIPs: fd00:bbbb::80
  2. 等待裸机置备服务 control plane 服务 CR 就绪:

    $ oc wait --for condition=Ready --timeout=300s ironics.ironic.openstack.org ironic
    Copy to Clipboard Toggle word wrap
  3. 验证单个服务是否已就绪:

    $ 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 Toggle word wrap
  4. 更新 provisioning、清理和救援网络上的 DNS Nameservers:

    注意

    要使名称解析用于裸机置备服务操作,您必须将 DNS 名称服务器设置为使用 RHOSO control plane 中的内部 DNS 服务器:

    $ openstack subnet set --dns-nameserver 192.168.122.80 provisioning-subnet
    Copy to Clipboard Toggle word wrap
  5. 验证节点列表中没有裸机置备服务节点:

    $ openstack baremetal node list
    Copy to Clipboard Toggle word wrap
    重要

    如果 openstack baremetal node list 命令输出报告了不正确的电源状态,请等待几分钟,然后重新运行命令以查看输出是否与被管理的硬件的实际状态同步。Bare Metal Provisioning 服务检查和协调裸机节点的电源状态所需的时间取决于通过 replicas 参数的操作编排器,并在采用裸机置备服务部署中存在这些时间。

  6. 如果 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
    '
    Copy to Clipboard Toggle word wrap

    应用此配置后,Operator 会重启 Ironic API 服务,并禁用默认启用的新 RBAC 策略。

  7. 查看没有分配所有者的裸机节点:

    $ openstack baremetal node list --long -c UUID -c Owner -c 'Provisioning State'
    Copy to Clipboard Toggle word wrap
  8. 将没有所有者的所有裸机节点分配给新项目,如 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
    Copy to Clipboard Toggle word wrap
  9. 通过删除 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
    '
    Copy to Clipboard Toggle word wrap

验证

  1. 验证端点列表:

    $ openstack endpoint list |grep ironic
    Copy to Clipboard Toggle word wrap
  2. 验证裸机节点列表:

    $ openstack baremetal node list
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat