6.7. Bare Metal Provisioning 서비스 채택
Bare Metal Provisioning 서비스(ironic) 구성에 대한 정보를 검토한 다음 베어 메탈 프로비저닝 서비스를 OpenShift 컨트롤 플레인의 Red Hat OpenStack Services에 채택합니다.
6.7.1. 베어 메탈 프로비저닝 서비스 구성 링크 복사링크가 클립보드에 복사되었습니다!
구성 스니펫을 사용하여 Bare Metal Provisioning 서비스(ironic)를 구성합니다. Bare Metal Provisioning 서비스를 사용하여 컨트롤 플레인을 구성하는 방법에 대한 자세한 내용은 OpenShift 배포에서 Red Hat OpenStack 서비스 사용자 지정을 참조하십시오.
일부 베어 메탈 프로비저닝 서비스 설정은 director Operator에서 재정의됩니다(예: PXE Loader 파일 이름은 중간 계층에서 재정의되는 경우가 많습니다. RHOSO(OpenShift)의 Red Hat OpenStack Services에 적용하는 설정에 주의하십시오. ironic-operator 는 적절한 작동 기본 구성을 적용하지만 이전 구성으로 재정의하면 환경이 이상적이지 않거나 새로운 Bare Metal Provisioning 서비스가 작동하지 않을 수 있습니다. 마찬가지로 ironic.conf 파일에서 추가 하드웨어 유형을 활성화하고 사용하는 경우 추가 구성이 필요할 수 있습니다.
적절한 기본값 모델에는 일반적으로 사용되는 하드웨어 유형 및 드라이버 인터페이스가 포함됩니다. 예를 들어 redfish-virtual-media 부팅 인터페이스와 램디스크 배포 인터페이스는 기본적으로 활성화되어 있습니다. 채택이 완료된 후 새 베어 메탈 노드를 추가하는 경우 노드 생성 요청에 명시적으로 설정하지 않거나 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_append_params 의 [pxe] 및 [redfish] 구성 섹션의 인스턴스는 배포 램디스크의 "console"과 같은 부팅 시간 옵션을 적용하는 데 사용되며 자주 변경해야 합니다.
ironic.conf 파일 enabled_hardware_types 매개변수로 설정된 하드웨어 유형 및 스테이징 부터 채택된 구성으로 시작하는 하드웨어 유형 드라이버 인터페이스를 마이그레이션할 수 없습니다.
6.7.2. Bare Metal Provisioning 서비스 배포 링크 복사링크가 클립보드에 복사되었습니다!
Bare Metal Provisioning 서비스(ironic)를 배포하려면 Bare Metal Provisioning 서비스가 비활성화된 기존 OpenStackControlPlane CR(사용자 정의 리소스)을 패치합니다. ironic-operator 는 구성을 적용하고 베어 메탈 프로비저닝 서비스를 시작합니다. 서비스가 실행되면 베어 메탈 프로비저닝 서비스가 관리하는 베어 메탈 노드의 전원 상태 폴링을 자동으로 시작합니다.
기본적으로 RHOSO 버전 18.0 이상에는 새로운 다중 테넌트 인식 역할 기반 액세스 제어(RBAC) 모델이 포함됩니다. 결과적으로 Bare Metal Provisioning 서비스를 채택한 후 openstack baremetal node list 명령을 실행할 때 베어 메탈 노드가 누락될 수 있습니다. 노드가 삭제되지 않습니다. RBAC 모델의 액세스 제한 증가로 인해 누락된 베어 메탈 노드가 있는 프로젝트를 식별하고 누락된 각 베어 메탈 노드에서 owner 필드를 설정해야 합니다.
사전 요구 사항
- 서비스 데이터베이스를 컨트롤 플레인 데이터베이스로 가져왔습니다.
RHOSO 18.0에서 베어 메탈 프로비저닝 서비스가 비활성화되어 있습니다. 다음 명령은
false문자열을 반환해야 합니다.$ oc get openstackcontrolplanes.core.openstack.org <name> -o jsonpath='{.spec.ironic.enabled}'-
&
lt;name>을 기존OpenStackControlPlaneCR의 이름으로 바꿉니다(예:openstack-control-plane).
-
&
ID 서비스(keystone), 네트워킹 서비스(neutron) 및 Image 서비스(glance)가 작동합니다.
참고베어 메탈에서 Bare Metal Provisioning 서비스를 서비스 구성으로 사용하는 경우 Bare Metal Provisioning 서비스를 채택하기 전에 Compute 서비스(nova)를 채택하지 마십시오.
- 베어 메탈 프로비저닝 서비스 컨덕터 서비스의 경우 서비스는 베어 메탈 프로비저닝 서비스에서 관리하도록 구성된 하드웨어의 베이스 보드 관리 컨트롤러에 연결할 수 있어야 합니다. 이 하드웨어에 연결할 수 없는 경우 노드는 "유지 관리" 상태가 되어 나중에 연결이 복원될 때까지 사용할 수 없습니다.
ironic.conf파일을 로컬로 다운로드했습니다.$CONTROLLER1_SSH cat /var/lib/config-data/puppet-generated/ironic/etc/ironic/ironic.conf > ironic.conf참고이 설정 파일은 director Operator 언더클라우드 노드가 아닌 컨트롤러 노드 중 하나에서 가져와야 합니다. director Operator 언더클라우드 노드는 Overcloud Ironic 배포를 채택할 때 적용되지 않는 다른 구성으로 작동합니다.
-
Ironic Inspector 서비스를 채택하는 경우
IronicInspectorSubnetsdirector Operator 매개변수의 값이 필요합니다. 동일한 값을 사용하여 RHOSO 환경에서dhcpRanges매개변수를 채웁니다. 다음 쉘 변수를 정의했습니다. 다음 예제 값을 환경에 적용되는 값으로 바꿉니다.
$ alias openstack="oc exec -t openstackclient -- openstack"
프로세스
OpenStackControlPlaneCR(사용자 정의 리소스)을 패치하여 베어 메탈 프로비저닝 서비스를 배포합니다.$ 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)로 변경합니다.
베어 메탈 프로비저닝 서비스 컨트롤 플레인 서비스 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프로비저닝, 정리 및 복구 네트워크에서 DNS Nameservers를 업데이트합니다.
참고Bare Metal Provisioning 서비스 작업에 대해 이름 확인이 작동하려면 RHOSO 컨트롤 플레인에서 내부 DNS 서버를 사용하도록 DNS 네임서버를 설정해야 합니다.
$ openstack subnet set --dns-nameserver 192.168.122.80 provisioning-subnet노드 목록에서 베어 메탈 프로비저닝 서비스 노드가 누락되어 있지 않은지 확인합니다.
$ openstack baremetal node list중요openstack baremetal node list명령 출력이 잘못된 전원 상태를 보고하면 몇 분 후에 명령을 다시 실행하여 출력이 관리 중인 하드웨어의 실제 상태와 동기화되는지 확인합니다. 베어 메탈 프로비저닝 서비스에서 베어 메탈 노드의 전원 상태를 검토하고 조정하는 데 필요한 시간은replicas매개변수를 통해 운영 체제 수와 채택 중인 베어 메탈 프로비저닝 서비스 배포에 있는 운영 체제 수에 따라 다릅니다.openstack baremetal node list명령에서 Bare Metal Provisioning 서비스 노드가 누락된 경우 새 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; donecustomServiceConfig섹션을 제거하거나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