Bare Metal Provisioning


Red Hat OpenStack Platform 8

베어 메탈 프로비저닝 설치, 구성 및 사용(Ironic)

OpenStack Documentation Team

초록

이 가이드에서는 Red Hat OpenStack Platform 환경의 Overcloud에서 Bare Metal Provisioning을 설치, 구성 및 사용하는 절차를 설명합니다.

머리말

이 문서에서는 오버클라우드에서 Bare Metal Provisioning(ironic)을 OpenStack 서비스로 설치 및 구성하고, 서비스를 사용하여 최종 사용자를 위한 물리적 시스템을 프로비저닝 및 관리하는 방법을 설명합니다. 이 서비스를 구성하면 사용자가 가상 머신 인스턴스를 시작하는 것과 동일한 방식으로 물리적 시스템에서 인스턴스를 시작할 수 있습니다.

베어 메탈 프로비저닝 구성 요소는 Red Hat OpenStack Platform director에서 언더클라우드의 일부로 OpenStack 환경(Overcloud)을 구성하는 베어 메탈 노드를 프로비저닝하고 관리하는 데도 사용됩니다. director에서 Bare Metal Provisioning을 사용하는 방법에 대한 자세한 내용은 Director 설치 및 사용을 참조하십시오.

참고

이 문서에서는 이미 배포된 오버클라우드에 Bare Metal Provisioning을 수동으로 설치하는 방법을 설명합니다. 이 수동 절차는 Bare Metal Provisioning을 최신 버전의 Red Hat OpenStack Platform director에 통합하는 방법과 다릅니다. 이 프로세스를 수행한 오버클라우드를 업그레이드하는 것은 지원되지 않으며 결과는 정의되지 않습니다. 이 문서는 최신 버전의 Red Hat OpenStack Platform director에 통합된 내용을 미리 보기 위한 가이드로 취급되어야 합니다.

1장. OpenStack Bare Metal Provisioning(ironic) 설치 및 구성

OpenStack Bare Metal Provisioning(ironic)은 최종 사용자를 위해 물리적(bare metal) 시스템을 프로비저닝하고 관리하는 데 필요한 구성 요소를 제공합니다. 오버클라우드의 Bare Metal Provisioning은 다음 OpenStack 서비스와 상호 작용합니다.

  • OpenStack Compute(nova)는 가상 머신 인스턴스 관리를 위한 스케줄링, 테넌트 할당량, IP 할당 및 사용자용 API를 제공하는 반면 Bare Metal Provisioning은 하드웨어 관리를 위한 관리 API를 제공합니다. 베어 메탈 프로비저닝 드라이버를 사용하고 베어 메탈 프로비저닝 요청을 처리할 전용 openstack-nova-compute 호스트를 선택합니다.
  • OpenStack Identity(keystone)는 요청 인증을 제공하고 Bare Metal Provisioning을 통해 다른 OpenStack 서비스를 찾을 수 있습니다.
  • OpenStack Image 서비스(glance)는 베어 메탈 머신을 부팅하는 데 사용되는 이미지 및 이미지 메타데이터를 관리합니다.
  • OpenStack Networking(neutron)은 필요한 베어 메탈 프로비저닝 네트워크에 대한 DHCP 및 네트워크 구성을 제공합니다.

베어 메탈 프로비저닝에서는 PXE를 사용하여 물리적 시스템을 프로비저닝합니다. 다음 다이어그램에서는 사용자가 새 베어 메탈 시스템을 시작할 때 프로비저닝 프로세스 중에 OpenStack 서비스가 상호 작용하는 방법을 간략하게 설명합니다.

The PXE Provisioning Process

1.1. 요구 사항

이 장에서는 설치 가정, 하드웨어 요구 사항, 네트워킹 요구 사항을 포함하여 베어 메탈 프로비저닝을 설정하기 위한 요구 사항을 간략하게 설명합니다.

1.1.1. 베어 메탈 프로비저닝 설치 사용

베어 메탈 프로비저닝은 동일한 노드 또는 별도의 노드에서 실행되도록 구성할 수 있는 구성 요소의 컬렉션입니다. 이 가이드의 구성 예제에서는 단일 노드에 모든 베어 메탈 프로비저닝 구성 요소를 설치하고 구성합니다. 이 가이드에서는 OpenStack Identity, OpenStack Image, OpenStack Compute 및 OpenStack Networking용 서비스가 이미 설치 및 구성되어 있다고 가정합니다. 베어 메탈 프로비저닝에는 다음 외부 서비스도 필요합니다. 이 서비스는 사전 요구 사항으로 설치 및 구성해야 합니다.

  • 하드웨어 정보 및 상태를 저장할 데이터베이스 서버입니다. 이 가이드에서는 MariaDB 데이터베이스 서비스가 Red Hat OpenStack Platform 환경에 대해 구성되어 있다고 가정합니다.
  • 메시징 서비스. 이 가이드에서는 RabbitMQ가 환경에 대해 구성되어 있다고 가정합니다.

director를 사용하여 OpenStack 환경을 배포하면 오버클라우드의 컨트롤러 노드에 데이터베이스 및 메시징 서비스가 설치됩니다.

Red Hat OpenStack Platform에는 컴퓨팅 노드 및 Red Hat Enterprise Linux 7을 실행하는 OpenStack Networking 노드에 firewalld 대신 iptables 가 필요합니다. 이 문서의 방화벽 규칙은 iptables 를 사용하여 설정됩니다.

참고

하드웨어 인트로스펙션(ironic-inspector)은 iptables 를 사용하여 ironic 노드의 MAC 주소를 블랙리스트로 지정합니다. ironic-inspector 가 수정하려고 시도하는 동안 다른 프로세스가 iptables 를 잠긴 경우 ironic-inspectoriptables -w 플래그를 사용합니다(버전 1.4.21 이상).

1.1.2. 베어 메탈 프로비저닝 하드웨어 요구 사항

모든 베어 메탈 프로비저닝 구성 요소를 실행하는 노드에는 다음과 같은 하드웨어가 필요합니다.

  • Intel 64 또는 AMD64 CPU 확장을 지원하는 64비트 x86 프로세서입니다.
  • 최소 6GB의 RAM.
  • 최소 40GB의 사용 가능한 디스크 공간
  • 최소 2개의 1Gbps 네트워크 인터페이스 카드가 필요합니다. 그러나 특히 다수의 베어 메탈 머신을 프로비저닝하는 경우 Bare Metal Provisioning Network 트래픽에 10Gbps 인터페이스를 사용하는 것이 좋습니다.
  • Red Hat Enterprise Linux 7.2 이상은 호스트 운영 체제로 설치되었습니다.

또는 전용 openstack-nova-compute 노드에 Bare Metal Provisioning 구성 요소를 설치 및 구성합니다. 하드웨어 요구 사항은 Director 설치 및 사용 가이드의 컴퓨팅 노드 요구 사항을 참조하십시오.

1.1.3. 베어 메탈 프로비저닝 네트워킹 요구 사항

베어 메탈 프로비저닝에는 두 개 이상의 네트워크가 필요합니다.

  • provisioning 네트워크: 베어 메탈 프로비저닝에서 베어 메탈 머신을 프로비저닝하고 관리하는 데 사용하는 프라이빗 네트워크입니다. 베어 메탈 프로비저닝 네트워크는 베어 메탈 시스템을 검색하는 데 도움이 되는 DHCP 및 PXE 부팅 기능을 제공합니다. 이 네트워크는 베어 메탈 프로비저닝이 PXE 부팅 및 DHCP 요청을 제공하도록 트렁크된 인터페이스에서 기본 VLAN을 사용하는 것이 좋습니다. 프로비저닝할 베어 메탈 머신의 대역 외 드라이버를 통해 전원 관리를 제어하는 데 사용되는 네트워크이기도 합니다.
  • 외부 네트워크: 원격 연결을 위한 별도의 네트워크입니다. 이 네트워크에 연결하는 인터페이스에는 정적으로 정의되거나 외부 DHCP 서비스를 통해 동적으로 라우팅 가능한 IP 주소가 필요합니다.

1.1.4. 베어 메탈 머신 요구 사항

프로비저닝할 베어 메탈 머신에는 다음이 필요합니다.

  • 두 개의 NIC: 하나는 베어 메탈 프로비저닝 네트워크용이고 다른 하나는 외부 연결용입니다.
  • 베어 메탈 프로비저닝 네트워크에 연결된 전원 관리 인터페이스(예: IPMI)입니다. 테스트 목적으로 SSH를 사용하는 경우 필요하지 않습니다.
  • 시스템 부팅 순서의 맨 위에 있는 베어 메탈 프로비저닝 네트워크에서 PXE 부팅, 하드 디스크 및 CD/DVD 드라이브보다 우선합니다. 시스템의 다른 모든 NIC에서 PXE 부팅을 비활성화합니다.

프로비저닝할 베어 메탈 머신의 기타 요구 사항은 설치 중인 운영 체제에 따라 다릅니다. Red Hat Enterprise Linux 7의 경우 Red Hat Enterprise Linux 7 설치 가이드를 참조하십시오. Red Hat Enterprise Linux 6의 경우 Red Hat Enterprise Linux 6 설치 가이드를 참조하십시오.

1.2. 베어 메탈 프로비저닝 서비스에 대해 OpenStack 구성

모든 OpenStack 서비스에는 ID 서비스로 인증하는 데 사용되는 사용자 이름과 암호가 있습니다. 각 서비스는 OpenStack ID 서비스로 정의하고 내부, 관리자 및 공용 연결을 위해 연결된 엔드포인트 URL이 있어야 합니다.

director 노드에서 Bare Metal Provisioning 서비스를 구성하려면 다음을 수행합니다.

  1. overcloudrc 파일을 소싱합니다.

    # source ~stack/overcloudrc
  2. OpenStack Bare Metal Provisioning 사용자를 생성합니다.

    # openstack user create --password IRONIC_PASSWORD --enable IRONIC_USER
    # openstack role add --project service --user IRONIC_USER admin

    여기서 IRONIC_USER 는 베어 메탈 프로비저닝 서비스의 사용자이며 IRONIC_PASSWORD 는 암호입니다.

  3. OpenStack Bare Metal Provisioning 서비스를 생성합니다.

    # openstack service create --name ironic --description "Ironic bare metal provisioning service" baremetal
  4. 다른 OpenStack 서비스에서 사용 중인 가상 IP(VIP) 주소를 확인합니다.

    # openstack endpoint list -c "Service Name" -c "PublicURL" --long

    이 명령의 출력에는 서비스와 공용 URL 이 나열됩니다. 일반적으로 동일한 서버에 있고 동일한 IP 주소를 사용합니다.

  5. 베어 메탈 프로비저닝 서비스를 설치하는 컴퓨팅 노드의 내부 API 네트워크 주소를 가져옵니다.

    # route -n

    이 명령의 출력에는 IP 주소와 각 IP 주소의 인터페이스가 포함된 IP 라우팅 테이블이 나열됩니다.

    그런 다음 내부 API 네트워크 주소를 사용하여 서비스 끝점을 생성합니다.

  6. 다음과 같이 내부 및 관리 URL에 사용할 NIC와 연결된 IP 주소를 확인할 수 있습니다.

    # ifconfig INTERFACE
  7. 서비스 끝점을 생성합니다.

    # openstack endpoint create --publicurl http://VIP:6385 --internalurl http://COMPUTE_INTERNAL_API_IP:6385 --adminurl http://COMPUTE_INTERNAL_API_IP:6385 --region regionOne SERVICE_ID

    여기에서 VIP 는 HAProxy에 구성된 가상 IP 주소입니다. COMPUTE_INTERNAL_API_IP 는 내부 API 네트워크에 연결된 베어 메탈 프로비저닝 서비스를 실행하는 컴퓨팅 노드의 IP 주소입니다. SERVICE_IDservice create 명령을 사용하여 생성된 베어 메탈 프로비저닝 서비스의 ID입니다.

다음으로 이전 절차에서 생성한 엔드포인트에 대한 공용 URL에 대한 요청을 수신하도록 HAProxy를 구성해야 합니다. HAProxy 값을 구성하려면 컨트롤러 노드에서 root 사용자로 로그인했는지 확인합니다.

  1. /etc/haproxy/haproxy.cfg 파일을 편집하고 파일 끝에 다음 행을 추가합니다.

    listen ironic
    
      bind VIP:6385 transparent
      server SERVER_NAME COMPUTE_INTERNAL_API_IP:6385 check fall 5 inter 2000 rise 2

    이 예제에서는 다음을 수행합니다.

    • VIP 는 가상 IP 주소입니다.
    • SERVER_NAME 은 베어 메탈 프로비저닝 서비스가 설치되고 실행 중인 Compute 서버의 HAProxy 식별 이름입니다.
    • COMPUTE_INTERNAL_API_IP 는 베어 메탈 프로비저닝 서비스가 설치되고 실행될 Compute 서버의 내부 API IP 주소입니다.
    • 투명한 기능을 사용하면 컨트롤러 노드에 없는 경우에도 HAProxy가 IP 주소를 바인딩할 수 있으므로 클러스터형 환경에서 가상 IP 주소가 컨트롤러 간에 이동할 수 있습니다.
    • Check fall 5에서 2000에서 raise 2 는 백엔드 서버의 다음과 같은 상태 점검을 나타냅니다.

      • fall 5 - 연속 실패 상태 점검 후 서버를 사용할 수 없는 것으로 간주됩니다.
      • 2000년 간 - 상태 점검 간격은 2000ms 또는 2초입니다.
      • 상승 2 - 2 연속 성공적인 상태 점검 후 서버를 사용할 수 있는 것으로 간주됩니다.
  2. HAProxy를 다시 시작하여 변경 사항이 적용되었는지 확인합니다.

    # systemctl restart haproxy.service

    백엔드 서버를 사용할 수 없다는 다음 메시지를 가져올 수 있습니다. haproxy[4249]: proxy ironic에 서버를 사용할 수 없습니다!. 서비스를 아직 설치하거나 구성하지 않았기 때문에 현재 이 메시지를 무시할 수 있습니다.

1.3. 베어 메탈 프로비저닝 서비스에 대한 컨트롤러 노드 구성

베어 메탈 프로비저닝 데이터베이스 생성 섹션을 제외하고 Red Hat OpenStack Platform 배포의 모든 컨트롤러 노드에서 root 사용자로 다음 단계를 수행해야 합니다. 한 컨트롤러에서 모두 데이터베이스를 공유하므로 이 절차를 수행해야 합니다.

컨트롤러 노드에서는 OpenStack 배포가 연결할 수 있도록 Bare Metal Provisioning 네트워크가 Open vSwitch에 연결되어 있는지 확인해야 합니다.

  1. Open vSwitch에 브리지를 추가합니다.

    # ovs-vsctl add-br br-ironic
    # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC
    # ovs-vsctl show

    여기서 br-ironic 은 브리지의 이름이며 IRONIC_PROVISIONING_NIC 는 베어 메탈 프로비저닝 네트워크에 연결된 NIC입니다.

    ovs-vsctl show 명령을 사용하면 연결된 포트를 사용하여 새 브릿지가 생성되는 것을 확인할 수 있지만 br-int 통합 브릿지에 새 브릿지에 대한 패치가 없다는 것을 알 수 있습니다.

  2. 통합 브리지에 새 브릿지를 추가하려면 다음 플러그인 파일을 업데이트해야 합니다.

    1. 다음과 같이 ML2 구성 파일 /etc/neutron/plugins/ml2/ml2_conf.ini 를 업데이트합니다.

      • type_drivers 매개변수의 경우 드라이버에 flat 이 나열되어 있는지 확인합니다(예: type_drivers = vxlan,vlan,flat,gre ). 쉼표로 구분된 목록입니다.
      • mechanism_drivers 매개변수의 경우 openvswitch 옵션이 드라이버(예: mechanism_drivers =openvswitch )에 나열되어 있는지 확인합니다. 쉼표로 구분된 목록입니다.
      • flat_networks 매개변수의 경우 이름을 생성하여 베어 메탈 프로비저닝 네트워크(예: ironicnet )를 참조합니다. 이 이름이 나열된 flat_networks 에 나열되어 있는지 확인합니다(예: flat_networks =datacentre,ironicnet ). 쉼표로 구분된 목록입니다.
      • 베어 메탈 프로비저닝 네트워크에 VLAN을 사용하는 경우 ironicnet:VLAN_START:VLAN_END 형식으로 network_vlan_ranges 매개변수를 추가합니다(예: network_vlan_ranges =datacentre:1:1000 ). 쉼표로 구분된 목록입니다.
      • enable_security_group 매개변수가 이미 활성화되어 있어야 합니다. 그러나 설정되지 않은 경우 값을 True 로 변경합니다 (예: enable_security_group = True ).
    2. /etc/neutron/plugins/ml2/openvswitch_agent.ini 파일에서 다음과 같이 bridge_mappings 매개변수 및 업데이트를 찾습니다.

      bridge_mappings =datacentre:br-ex,ironicnet:br-ironic

      쉼표로 구분된 이 키-값 쌍의 값은 베어 메탈 프로비저닝 네트워크의 이름을 네트워크에 연결된 물리적 장치에 매핑합니다.

  3. neutron-openvswitch-agent.service 를 다시 시작하여 br-ironic 브리지를 통합 브리지의 일부로 확인합니다.

    # systemctl restart neutron-openvswitch-agent.service
  4. 새 연결을 감지하도록 neutron-server.service 를 다시 시작하십시오.

    # systemctl restart neutron-server.service
    참고

    이 단계를 수행하지 않으면 OpenStack Networking 서비스 내에서 Bare Metal Provisioning 네트워크를 생성하려고 하면 요청된 플랫 네트워크가 존재하지 않는다는 메시지와 함께 실패합니다.

1.3.1. 베어 메탈 프로비저닝 데이터베이스 생성

베어 메탈 프로비저닝에서 사용하는 데이터베이스 및 데이터베이스 사용자를 만듭니다. 이 절차의 모든 단계는 root 사용자로 로그인한 동안 데이터베이스 서버에서 수행해야 합니다.

베어 메탈 프로비저닝 데이터베이스 생성

  1. 데이터베이스 서비스에 연결합니다.

    # mysql -u root
  2. ironic 데이터베이스를 생성합니다.

    mysql> CREATE DATABASE ironic CHARACTER SET utf8;
  3. ironic 데이터베이스 사용자를 생성하고 ironic 데이터베이스에 대한 액세스 권한을 부여합니다.

    mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' IDENTIFIED BY 'PASSWORD';
    mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' IDENTIFIED BY 'PASSWORD';

    이 사용자로 데이터베이스 서버로 인증하는 데 사용할 보안 암호로 PASSWORD 를 바꿉니다.

  4. 데이터베이스 권한을 플러시하여 즉시 적용되도록 합니다.

    mysql> FLUSH PRIVILEGES;
  5. mysql 클라이언트를 종료합니다.

    mysql> quit

1.3.2. 베어 메탈 프로비저닝을 위해 OpenStack Compute Services 구성

베어 메탈 프로비저닝 드라이버에 대한 Compute 서비스를 구성합니다. 이 드라이버를 사용하면 Compute에서 가상 머신을 프로비저닝하는 데 사용되는 동일한 API를 사용하여 물리적 시스템을 프로비저닝할 수 있습니다. 각 openstack-nova-compute 노드에 대해 하나의 드라이버만 지정할 수 있습니다. Bare Metal Provisioning 드라이버가 있는 노드는 물리적 시스템만 프로비저닝할 수 있습니다. 베어 메탈 프로비저닝 드라이버를 사용하여 모든 베어 메탈 노드를 프로비저닝하도록 단일 openstack-nova-compute 노드를 할당하는 것이 좋습니다. 다음 절차의 모든 단계는 root 사용자로 로그인한 동안 선택한 컴퓨팅 노드에서 수행해야 합니다.

베어 메탈 프로비저닝을 위한 OpenStack Compute 구성

  1. Bare Metal Provisioning 스케줄러 호스트 관리자를 사용하도록 Compute를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_host_manager nova.scheduler.ironic_host_manager.IronicHostManager
  2. 인스턴스의 변경 사항을 추적하지 못하도록 Compute 스케줄러를 비활성화합니다.

    # openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_tracks_instance_changes false
  3. 다음과 같이 기본 필터를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf DEFAULT baremetal_scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter
  4. 기본 Bare Metal Provisioning 스케줄링 필터를 사용하도록 Compute를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_use_baremetal_filters True
  5. 베어 메탈 프로비저닝에 대한 올바른 인증 세부 정보를 사용하도록 Compute를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_username ironic
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_password PASSWORD
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_url http://IDENTITY_IP:35357/v2.0
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_tenant_name service
    # openstack-config --set /etc/nova/nova.conf \
       ironic api_endpoint http://IRONIC_API_IP:6385/v1

    다음 값을 바꿉니다.

    • Bare Metal Provisioning에서 Identity로 인증하는 데 사용하는 암호로 PASSWORD 를 바꿉니다.
    • IDENTITY_IP 를 ID를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 교체합니다.
    • IRONIC_API_IP 를 Bare Metal Provisioning API 서비스를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 교체합니다.
  6. ironic 컴퓨팅 노드에서 nova 데이터베이스 인증 정보를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf database connection "mysql+pymysql://nova:NOVA_DB_PASSWORD@DB_IP/nova"
  7. 컴퓨팅 컨트롤러 노드에서 Compute 스케줄러 서비스를 다시 시작합니다.

    # systemctl restart openstack-nova-scheduler.service
  8. 컴퓨팅 노드에서 compute 서비스를 다시 시작합니다.

    # systemctl restart openstack-nova-compute.service

1.3.3. iPXE 요청을 태그하도록 OpenStack Networking DHCP 에이전트를 구성

iPXE의 OpenStack Networking DHCP 요청에는 ipxe 라는 DHCP 태그가 있어야 DHCP 서버에 boot.ipxe 스크립트를 가져오기 위해 클라이언트가 HTTP 작업을 수행해야 함을 알립니다. OpenStack Networking DHCP 에이전트 서비스에서 사용하는 dnsmasq 구성 파일에 dhcp-userclass 항목을 추가하여 이 작업을 수행할 수 있습니다.

  1. 오버클라우드 컨트롤러에서 DHCP 에이전트가 사용 중인 dnsmasq 파일을 확인합니다.

    # grep ^dnsmasq_config_file /etc/neutron/dhcp_agent.ini
    
    dnsmasq_config_file =/etc/neutron/dnsmasq-neutron.conf
  2. 이 파일을 편집하고 파일 끝에 다음 행을 추가합니다.

    # Create the "ipxe" tag if request comes from iPXE user class
    
    dhcp-userclass=set:ipxe,iPXE
  3. 파일을 저장하고 OpenStack Networking DHCP 에이전트 서비스를 다시 시작합니다.

    # systemctl restart neutron-dhcp-agent.service

1.4. 베어 메탈 프로비저닝에 대한 컴퓨팅 노드 구성

여기에서는 베어 메탈 프로비저닝 서비스를 실행하는 컴퓨팅 노드에 적용됩니다. 컴퓨팅 노드에서 root 사용자로 다음 단계를 수행해야 합니다.

컴퓨팅 노드에는 베어 메탈 프로비저닝 NIC(예: eth6 )가 있습니다. 이 절차의 목표는 다음과 같습니다.

  1. 베어 메탈 프로비저닝 NIC를 연결하려면 이 예제의 eth6 을 Open vSwitch에 연결합니다.
  2. 이 연결에서 IP 주소를 할당하려면 베어 메탈 노드에서 iPXE 프로세스의 일부로 부팅 이미지를 가져와야 합니다.

eth6 을 Open vSwitch에 연결

  1. 1.3절. “베어 메탈 프로비저닝 서비스에 대한 컨트롤러 노드 구성” 의 컨트롤러 노드와 마찬가지로 베어 메탈 프로비저닝 서비스를 실행하는 컴퓨팅 노드의 Open vSwitch 내에 브릿지를 생성합니다.

    # ovs-vsctl add-br br-ironic
    # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC

    여기에서 br-ironic 은 브리지의 이름이며, IRONIC_PROVISIONING NIC 는 베어 메탈 프로비저닝 네트워크에 연결된 NIC입니다(예: eth6 ).

    참고

    이 노드와 1.3절. “베어 메탈 프로비저닝 서비스에 대한 컨트롤러 노드 구성” 의 유일한 차이점은 컴퓨팅 노드에서 OpenStack Networking 서비스를 재시작하지 않는다는 것입니다.

    그러면 Open vSwitch에 브리지와 포트가 추가되어 ovs-vsctl show 명령을 사용하여 확인할 수 있습니다. 그러나 OpenStack에서 사용하기 위해 통합 브리지(br-int)에 연결하지 않습니다.

  2. 연결을 생성하려면 다음과 같이 OpenStack Networking 플러그인 파일을 업데이트해야 합니다.

    1. 다음과 같이 ML2 구성 파일 /etc/neutron/plugins/ml2/ml2_conf.ini 를 업데이트합니다.

      • type_drivers 매개변수의 경우 드라이버에 flat 이 나열되어 있는지 확인합니다(예: type_drivers = vxlan,vlan,flat,gre ). 쉼표로 구분된 목록입니다.
      • mechanism_drivers 매개변수의 경우 openvswitch 옵션이 드라이버(예: mechanism_drivers =openvswitch )에 나열되어 있는지 확인합니다. 쉼표로 구분된 목록입니다.
      • flat_networks 매개변수의 경우 이름을 생성하여 베어 메탈 프로비저닝 네트워크(예: ironicnet )를 참조합니다. 이 이름이 나열된 flat_networks 에 나열되어 있는지 확인합니다(예: flat_networks =datacentre,ironicnet ). 쉼표로 구분된 목록입니다.
      • 베어 메탈 프로비저닝 네트워크에 VLAN을 사용하는 경우 ironicnet:VLAN_START:VLAN_END 형식으로 network_vlan_ranges 매개변수를 추가합니다(예: network_vlan_ranges =datacentre:1:1000 ). 쉼표로 구분된 목록입니다.
      • enable_security_group 매개변수가 이미 활성화되어 있어야 합니다. 그러나 설정되지 않은 경우 값을 True 로 변경합니다 (예: enable_security_group = True ).
    2. /etc/neutron/plugins/ml2/openvswitch_agent.ini 파일에서 다음과 같이 bridge_mappings 매개변수 및 업데이트를 찾습니다.

      bridge_mappings =datacentre:br-ex,ironicnet:br-ironic

      쉼표로 구분된 이 키-값 쌍의 값은 베어 메탈 프로비저닝 네트워크의 이름을 네트워크에 연결된 물리적 장치에 매핑합니다.

  3. OpenStack Networking Open vSwitch 에이전트 서비스를 다시 시작합니다.

    # systemctl restart neutron-openvswitch-agent.service

이제 이 절차를 통해 첫 번째 목표를 달성했습니다. 다음으로 br-ironic 브리지에 IP 주소를 할당하고 재부팅 후에도 유지되는지 확인해야 합니다.

베어 메탈 서버에 IP 주소 할당

  1. /etc/sysconfig/network-scripts 위치에 표준 구성 파일을 만듭니다. 테넌트 네트워크에서 이미 사용 가능한 ifcfg* 파일을 복사하고 br-ironiceth6장치,ipaddr,ovs_bridge, 브리지 이름MAC 주소 값을 편집할 수 있습니다. 새 파일 업데이트를 완료한 경우 다음과 같은 값이 있어야 합니다.

    ifcfg-br-ironic

    DEVICE=br-ironic
    ONBOOT=yes
    HOTPLUG=no
    NM_CONTROLLED=no
    PEERDNS=no
    DEVICETYPE=ovs
    TYPE=OVSBridge
    BOOTPROTO=static
    IPADDR=BARE_METAL_PROVISIONING_IP
    NETMASK=255.255.255.0
    OVS_EXTRA="set bridge br-ironic other-config:hwaddr=MAC_ADDRESS"

    ifcfg-eth6

    DEVICE=eth6
    ONBOOT=yes
    HOTPLUG=no
    NM_CONTROLLED=no
    PEERDNS=no
    DEVICETYPE=ovs
    TYPE=OVSPort
    OVS_BRIDGE=br-ironic
    BOOTPROTO=none
  2. 네트워크 브리지를 다시 시작하여 IP 주소를 ping할 수 있도록 합니다.

    # ifup br-ironic
    참고

    네트워크 서비스를 다시 시작할 때 노드에서 연결을 끊으면 서버를 재부팅합니다.

1.4.1. 필수 채널에 가입

베어 메탈 프로비저닝 패키지를 설치하려면 Red Hat Subscription Manager에 서버 또는 서버를 등록하고 필요한 채널을 구독해야 합니다. 컴퓨팅 노드에 Bare Metal Provisioning을 설치하는 경우 서버가 이미 적절하게 서브스크립션될 수 있습니다. yum repolist 를 실행하여 아래 절차의 채널이 활성화되었는지 확인합니다.

필수 채널에 가입

  1. 메시지가 표시되면 시스템을 Content Delivery Network에 등록하고, 고객 포털 사용자 이름과 암호를 입력합니다.

    # subscription-manager register
  2. 베어 메탈 프로비저닝을 설치하는 데 필요한 채널이 포함된 인타이틀먼트 풀을 찾습니다.

    # subscription-manager list --available | grep -A13 "Red Hat Enterprise Linux Server"
    # subscription-manager list --available | grep -A13 "Red Hat OpenStack Platform"
  3. 이전 단계에 있는 풀 ID를 사용하여 Red Hat Enterprise Linux 7 ServerRed Hat OpenStack Platform 인타이틀먼트를 연결합니다.

    # subscription-manager attach --pool=POOL_ID
  4. 필요한 채널을 활성화합니다.

    # subscription-manager repos --enable=rhel-7-server-rpms \
    --enable=rhel-7-server-openstack-8-rpms \
    --enable=rhel-7-server-rh-common-rpms --enable=rhel-7-server-optional-rpms \
    --enable=rhel-7-server-openstack-8-optools-rpms

1.4.2. 베어 메탈 프로비저닝 패키지 설치

베어 메탈 프로비저닝에는 다음 패키지가 필요합니다.

openstack-ironic-api

Bare Metal Provisioning API 서비스를 제공합니다.

openstack-ironic-conductor

Bare Metal Provisioning conductor 서비스를 제공합니다. 컨덕터를 사용하면 노드를 추가, 편집 및 삭제하고 IPMI 또는 SSH를 사용하여 노드의 전원을 켜거나 끄고 베어 메탈 노드를 프로비저닝, 배포 및 해제할 수 있습니다.

python-ironicclient

베어 메탈 프로비저닝 서비스와 상호 작용을 위한 명령줄 인터페이스를 제공합니다.

패키지를 설치합니다.

# yum install openstack-ironic-api openstack-ironic-conductor python-ironicclient ipxe-bootimgs

1.4.3. iPXE 구성

  1. iPXE, map-files에 필요한 디렉터리를 생성하고 undionly.kpxe 부팅 이미지, iPXE 및 map-file 을 위치에 복사합니다.

    # mkdir /httpboot
    # mkdir /tftpboot
    # echo 'r ([/]) /tftpboot/\1' > /tftpboot/map-file
    # echo 'r ^(/tftpboot/) /tftpboot/\2' >> /tftpboot/map-file
    # cp /usr/share/ipxe/undionly.kpxe /tftpboot/
    # chown -R ironic:ironic /httpboot
    # chown -R ironic:ironic /tftpboot
  2. 기본적으로 director에서 배포한 컴퓨팅 노드는 Enforcing 모드에서 SELinux를 실행합니다. iPXE 부팅을 시도할 때 권한 오류가 발생하지 않도록 하려면 이러한 디렉터리에 적절한 레이블을 설정해야 합니다. 이러한 레이블을 적용하려면 root 사용자로 다음 명령을 실행합니다.

    # semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?"
    # restorecon -Rv /httpboot
    # semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?"
    # restorecon -Rv /tftpboot
  3. 이미지 요청을 처리할 수 있도록 HTTP를 구성합니다. httpd 패키지가 이미 설치되어 있으므로 적절한 가상 호스트 항목을 생성하고 서비스를 시작하는 것이 중요합니다.

    참고

    /etc/httpd/conf.d 에는 파일 수가 포함되어 있습니다. Red Hat은 모든 노드에 대해 단일 오버클라우드 전체 이미지를 사용하므로 컨트롤러 노드에서만 사용되는 경우에도 모든 노드에 이러한 파일이 포함됩니다. /etc/httpd/conf.d 의 내용을 삭제하거나 사용하지 않으므로 다른 곳에 복사할 수 있습니다.

    iPXE 구성에 사용할 새 파일을 에 만듭니다. 이 파일의 이름을 .conf 형식으로 지정하고 다음 내용이 있는지 확인할 수 있습니다.

    # cat 10-ipxe_vhost.conf
    Listen 8088
    <VirtualHost *:8088>
        DocumentRoot "/httpboot"
        <Directory "/httpboot">
            Options Indexes FollowSymLinks
            AllowOverride None
            Order allow,deny
            Allow from all
            Require all granted
        </Directory>
    
        ## Logging
        ErrorLog "/var/log/httpd/ironic_error.log"
        ServerSignature Off
        CustomLog "/var/log/httpd/ironic_access.log" combined
    </VirtualHost>

    위의 가상 호스트 구성은 포트 8088의 모든 주소에 나열되도록 HTTPD를 구성하고 모든 요청에 대한 문서 루트를 해당 포트로 설정하여 /httpboot 로 이동합니다.

  4. 이 파일을 저장하고 컴퓨팅 노드에서 HTTPD 서비스를 활성화하고 다시 시작합니다.

    # systemctl enable httpd.service
    # systemctl start httpd.service

1.4.4. 베어 메탈 프로비저닝 서비스 구성

이 섹션에서는 /etc/ironic/ironic.conf 파일을 필요한 변경합니다.

1.4.4.1. 데이터베이스 서버와 결합하도록 베어 메탈 프로비저닝 구성

연결 구성 키의 값을 설정합니다.

# openstack-config --set /etc/ironic/ironic.conf \
database connection mysql+pymysql://ironic:PASSWORD@IP/ironic

여기에서 PASSWORD 는 데이터베이스 서버의 암호이며 IP 는 데이터베이스 서버의 IP 주소 또는 호스트 이름입니다.

중요

연결 구성 키에 지정된 IP 주소 또는 호스트 이름은 베어 메탈 프로비저닝 데이터베이스 사용자에게 1.3.1절. “베어 메탈 프로비저닝 데이터베이스 생성” 에서 베어 메탈 프로비저닝 데이터베이스를 생성할 때 액세스 권한이 부여된 IP 주소 또는 호스트 이름과 일치해야 합니다. 또한 데이터베이스가 로컬로 호스팅되고 데이터베이스를 만들 때 localhost 에 대한 권한이 부여된 경우 localhost 를 입력해야 합니다.

1.4.4.2. 베어 메탈 프로비저닝 인증 구성

인증에 ID를 사용하도록 베어 메탈 프로비저닝을 구성합니다. 이 절차의 모든 단계는 root 사용자로 로그인한 동안 Bare Metal Provisioning을 호스팅하는 서버 또는 서버에서 수행해야 합니다.

ID를 통해 인증하도록 베어 메탈 프로비저닝 구성

  1. Bare Metal Provisioning에서 사용해야 하는 ID 공용 및 관리자 끝점을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken auth_uri http://IP:5000/v2.0
    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken identity_uri http://IP:35357/

    IP 를 ID 서버의 IP 주소 또는 호스트 이름으로 바꿉니다.

  2. 서비스 테넌트로 인증하도록 Bare Metal Provisioning을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_tenant_name service
  3. ironic 관리 사용자 계정을 사용하여 인증하도록 Bare Metal Provisioning을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_user ironic
  4. 올바른 ironic 관리 사용자 계정 암호를 사용하도록 Bare Metal Provisioning을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_password PASSWORD

    ironic 사용자를 생성할 때 PASSWORD 를 설정한 암호로 교체합니다.

1.4.4.3. 베어 메탈 프로비저닝에 대한 RabbitMQ 메시지 브로커 설정 구성

RabbitMQ는 기본(및 권장) 메시지 브로커입니다. RabbitMQ 메시징 서비스는 rabbitmq-server 패키지에서 제공합니다. 다음 절차의 모든 단계는 root 사용자로 로그인한 동안 Bare Metal Provisioning을 호스팅하는 컨트롤러 또는 컴퓨팅 노드에서 수행해야 합니다.

이 절차에서는 RabbitMQ 메시징 서비스가 설치 및 구성되었으며 메시징 서비스를 호스팅하는 서버에서 ironic 사용자 및 관련 암호가 생성되었다고 가정합니다.

RabbitMQ 메시지 브로커를 사용하도록 베어 메탈 프로비저닝 구성

  1. RabbitMQ를 RPC 백엔드로 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       DEFAULT rpc_backend ironic.openstack.common.rpc.impl_kombu
  2. RabbitMQ 호스트에 연결하도록 베어 메탈 프로비저닝을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_host RABBITMQ_HOST

    RA #159ITMQ_HOST 를 메시지 브로커를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 바꿉니다.

  3. 메시지 브로커 포트를 5672로 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_port 5672
  4. RabbitMQ를 구성할 때 Bare Metal Provisioning용으로 생성된 RabbitMQ 사용자 이름과 암호를 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_userid guest
    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_password RABBIT_GUEST_PASSWORD

    RA CryostatIT_GUEST_PASSWORD 를 guest 사용자의 RabbitMQ 암호로 바꿉니다.

  5. RabbitMQ가 시작되면 게스트 사용자에게 가상 호스트를 통해 모든 리소스에 대한 읽기 및 쓰기 권한이 부여되었습니다. 이 가상 호스트에 연결하도록 Bare Metal Provisioning을 구성합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_virtual_host /
1.4.4.4. 베어 메탈 프로비저닝 드라이버 구성

베어 메탈 프로비저닝에서는 베어 메탈 서버를 배포하고 관리하기 위한 여러 드라이버를 지원합니다. 일부 드라이버에는 하드웨어 요구 사항이 있으며 추가 구성 또는 패키지 설치가 필요합니다. 자세한 드라이버 정보는 부록 A. Bare Metal 프로비저닝 드라이버 를 참조하십시오. 드라이버 이름의 처음 절반은 배포 방법(예: PXE)을 지정하고 두 번째 절반은 전원 관리 방법(예: IPMI)을 지정합니다.

베어 메탈 프로비저닝 드라이버 구성

  1. 베어 메탈 서버를 프로비저닝하는 데 사용할 드라이버 또는 드라이버를 지정합니다. 쉼표로 구분된 목록을 사용하여 여러 드라이버를 지정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       DEFAULT enabled_drivers DRIVER1,DRIVER2

    지원되는 드라이버는 다음과 같습니다.

    • PXE 배포가 있는 IPMI

      • pxe_ipmitool
    • PXE 배포가 있는 DRAC

      • pxe_drac
    • PXE 배포를 사용하는 ILO

      • pxe_ilo
    • PXE 배포를 통한 SSH

      • pxe_ssh
    • PXE가 있는 iRMC

      • pxe_irmc
  2. Bare Metal conductor 서비스를 다시 시작합니다.

    # systemctl restart openstack-ironic-conductor.service
1.4.4.5. PXE를 사용하도록 Bare Metal Provisioning 서비스 구성
  1. PXE 템플릿을 사용하도록 Bare Metal Provisioning 서비스를 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe pxe_config_template \$pybasedir/drivers/modules/ipxe_config.template
  2. tftp_server:을 사용하도록 Bare Metal Provisioning 서비스를 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe tftp_server BARE_METAL_PROVISIONING_NETWORK_IP
  3. PXE tftp_root:을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe tftp_root /tftpboot
  4. PXE 부팅 파일 이름을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe pxe_bootfile_name undionly.kpxe
  5. iPXE를 사용하도록 Bare Metal Provisioning 서비스를 활성화합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
    pxe ipxe_enabled true
  6. http 서버의 URL을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf deploy http_url http://BARE_METAL_PROVISIONING_IP:8088
  7. Bare Metal conductor 서비스를 다시 시작합니다.

    # systemctl restart openstack-ironic-conductor.service
1.4.4.6. OpenStack Networking 및 OpenStack Image와 결합하도록 Bare Metal Provisioning 구성

베어 메탈 프로비저닝에서는 DHCP 및 네트워크 구성에 OpenStack Networking을 사용하고 물리적 시스템을 부팅하는 데 사용되는 이미지를 관리하는 데 이미지 서비스를 사용합니다. OpenStack Networking 및 이미지 서비스에 연결하고 통신하도록 베어 메탈 프로비저닝을 구성합니다. 이 절차의 모든 단계는 root 사용자로 로그인한 동안 Bare Metal Provisioning을 호스팅하는 서버에서 수행해야 합니다.

OpenStack Networking 및 OpenStack Image와 결합하도록 베어 메탈 프로비저닝 구성

  1. OpenStack Networking 엔드포인트를 사용하도록 Bare Metal Provisioning을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       neutron url http://NEUTRON_IP:9696

    NEUTRON_IP 를 OpenStack Networking을 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 바꿉니다.

  2. 이미지 서비스와 통신하도록 베어 메탈 프로비저닝을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       glance glance_host GLANCE_IP

    GLANCE_IP 를 이미지 서비스를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 바꿉니다.

  3. Bare Metal Provisioning API 서비스를 시작하고 부팅 시 시작되도록 구성합니다.

    # systemctl start openstack-ironic-api.service
    # systemctl enable openstack-ironic-api.service
  4. 베어 메탈 프로비저닝 데이터베이스 테이블을 생성합니다.

    # ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
  5. Bare Metal Provisioning conductor 서비스를 시작하고 부팅 시 시작되도록 구성합니다.

    # systemctl restart openstack-ironic-conductor.service
    # systemctl enable openstack-ironic-conductor.service

1.4.5. 베어 메탈 프로비저닝 서비스를 사용하도록 OpenStack Compute 구성

이 섹션에서는 베어 메탈 프로비저닝 서비스를 사용하도록 Compute 서비스를 구성하도록 /etc/nova/nova.conf 파일을 업데이트합니다.

베어 메탈 프로비저닝을 사용하도록 OpenStack Compute 구성

  1. 클러스터형 컴퓨팅 관리자를 사용하도록 Compute를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT compute_manager ironic.nova.compute.manager.ClusteredComputeManager
  2. 가상 RAM을 물리적 RAM 할당 비율로 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT ram_allocation_ratio 1.0
  3. 호스트에 예약할 디스크 공간을 MB로 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT reserved_host_memory_mb 0
  4. Bare Metal Provisioning 드라이버를 사용하도록 Compute를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT compute_driver nova.virt.ironic.IronicDriver
  5. 베어 메탈 프로비저닝에 대한 올바른 인증 세부 정보를 사용하도록 Compute를 설정합니다.

    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_username ironic
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_password PASSWORD
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_url http://IDENTITY_IP:35357/v2.0
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_tenant_name service
    # openstack-config --set /etc/nova/nova.conf \
       ironic api_endpoint http://IRONIC_API_IP:6385/v1

    다음 값을 바꿉니다.

    • Bare Metal Provisioning에서 Identity로 인증하는 데 사용하는 암호로 PASSWORD 를 바꿉니다.
    • IDENTITY_IP 를 ID를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 교체합니다.
    • IRONIC_API_IP 를 Bare Metal Provisioning API 서비스를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 교체합니다.
  6. 컴퓨팅 컨트롤러 노드에서 Compute 스케줄러 서비스를 다시 시작합니다.

    # systemctl restart openstack-nova-scheduler.service
  7. 컴퓨팅 노드에서 compute 서비스를 다시 시작합니다.

    # systemctl restart openstack-nova-compute.service

2장. 베어 메탈 배포 구성

OpenStack 환경에서 베어 메탈 배포를 활성화하도록 베어 메탈 프로비저닝, 이미지 서비스 및 컴퓨팅을 구성합니다. 다음 섹션에서는 베어 메탈 노드를 배포하는 데 필요한 추가 구성 단계를 간략하게 설명합니다.

2.1. 베어 메탈 프로비저닝 서비스에 대한 OpenStack 구성 생성

2.1.1. OpenStack Networking 구성 구성

DHCP, PXE 부팅 및 기타 요구 사항에 대한 베어 메탈 프로비저닝과 통신하도록 OpenStack 네트워킹을 구성합니다. 아래 절차에서는 베어 메탈에 프로비저닝하기 위한 단일 플랫 네트워크 사용 사례에 대해 OpenStack Networking을 구성합니다. 구성에서는 ML2 플러그인 및 Open vSwitch 에이전트를 사용합니다.

프로비저닝에 사용되는 네트워크 인터페이스가 OpenStack Networking 노드의 원격 연결에 사용되는 네트워크 인터페이스와 동일하지 않은지 확인합니다. 이 절차에서는 베어 메탈 프로비저닝 네트워크 인터페이스를 사용하여 브릿지를 생성하고 원격 연결을 삭제합니다.

다음 절차의 모든 단계는 root 사용자로 로그인한 동안 OpenStack Networking을 호스팅하는 서버에서 수행해야 합니다.

베어 메탈 프로비저닝과 결합하도록 OpenStack 네트워킹 구성

  1. 관리자로 ID에 액세스하도록 쉘을 설정합니다.

    # source ~stack/overcloudrc
  2. 베어 메탈 인스턴스를 프로비저닝할 flat 네트워크를 생성합니다.

    # neutron net-create --tenant-id TENANT_ID sharednet1 --shared \
    --provider:network_type flat --provider:physical_network PHYSNET

    TENANT_ID 를 네트워크를 생성할 테넌트의 고유 식별자로 바꿉니다. Cryo statYSNET 을 물리적 네트워크의 이름으로 바꿉니다.

  3. flat 네트워크에 서브넷을 생성합니다.

    # neutron subnet-create sharednet1 NETWORK_CIDR --name SUBNET_NAME \
    --ip-version 4 --gateway GATEWAY_IP --allocation-pool \
    start=START_IP,end=END_IP --enable-dhcp

    다음 값을 바꿉니다.

    • NETWORK_CIDR 를 서브넷이 나타내는 IP 주소 블록의 CIDR(Classless Inter-Domain Routing) 표현으로 바꿉니다. START_IP 에서 시작한 범위에서 지정한 IP 주소 블록에서 END_IP 로 종료한 IP 주소 블록은 NETWORK_CIDR 에서 지정하는 IP 주소 블록에 속해야 합니다.
    • SUBNET_NAME 을 서브넷의 이름으로 바꿉니다.
    • GATEWAY_IP 를 새 서브넷의 게이트웨이 역할을 할 시스템의 IP 주소 또는 호스트 이름으로 교체합니다. 이 주소는 NETWORK_CIDR 에서 지정하는 IP 주소 블록 내에 있어야 하지만, START_IP 에서 시작하고 END_IP.com에 의해 종료되는 범위로 지정된 IP 주소 블록 외부에 있어야 합니다.
    • START_IP 를 유동 IP 주소가 할당될 새 서브넷 내의 IP 주소 범위를 시작하는 IP 주소로 바꿉니다.
    • END_IP 를 유동 IP 주소가 할당될 새 서브넷 내의 IP 주소 범위 끝을 나타내는 IP 주소로 바꿉니다.
  4. 네트워크와 서브넷을 라우터에 연결하여 OpenStack Networking 서비스에서 메타데이터 요청을 제공하는지 확인합니다.

    # neutron router-create ROUTER_NAME

    ROUTER_NAME 을 라우터의 이름으로 바꿉니다.

  5. 이 라우터에서 Bare Metal 서브넷을 인터페이스로 추가합니다.

    # neutron router-interface-add ROUTER_NAME BAREMETAL_SUBNET

    ROUTER_NAME 을 라우터 이름으로 바꾸고 BAREMETAL_SUBNET 을 이전에 생성한 ID 또는 서브넷 이름으로 바꿉니다. 이를 통해 cloud-init 의 메타데이터 요청을 제공하고 노드를 구성할 수 있습니다.

  6. Bare Metal Provisioning 서비스를 실행하는 컴퓨팅 노드에서 /etc/ironic/ironic.conf 파일을 업데이트하여 정리 서비스에 동일한 네트워크를 활용합니다. 베어 메탈 프로비저닝 서비스가 실행 중인 컴퓨팅 노드에 로그인하고 root 사용자로 다음을 실행합니다.

    # openstack-config --set /etc/ironic/ironic.conf neutron cleaning_network_uuid NETWORK_UUID

    NETWORK_UUID 를 이전 단계에서 만든 베어 메탈 프로비저닝 네트워크의 ID로 바꿉니다.

  7. 베어 메탈 프로비저닝 서비스를 다시 시작합니다.

    # systemctl restart openstack-ironic-conductor.service

2.1.2. 베어 메탈 프로비저닝 플레이버 생성

베어 메탈 노드에서 제공하는 것과 같거나 그 이하의 사양(메모리, CPU 및 디스크)이 있어야 하는 배포의 일부로 사용할 플레이버를 생성해야 합니다.

  1. 기존 플레이버를 나열합니다.

    # openstack flavor list
  2. Bare Metal Provisioning 서비스에 대한 새 플레이버를 생성합니다.

    # openstack flavor create --id auto --ram RAM --vcpus VCPU --disk DISK --public baremetal

    RAM 을 RAM 메모리로 바꾸고, Cryo stat 를 vCPU 수로, DISK 를 디스크 스토리지 값으로 바꿉니다.

  3. 로컬 디스크에서 부팅되도록 플레이버를 설정합니다. 그렇지 않으면 기본 netboot 방법이 사용됩니다.

    # openstack flavor set --property capabilities:boot_option='local' baremetal
  4. 해당 값을 사용하여 새 플레이버가 생성되었는지 확인합니다.

    # openstack flavor list

2.1.3. 베어 메탈 이미지 생성

베어 메탈 프로비저닝 배포에는 두 가지 이미지 세트( 배포 이미지와 사용자 이미지)가 필요합니다. 배포 이미지는 노드를 부팅하고 사용자 이미지를 베어 메탈 프로비저닝 노드에 복사하는 유일한 용도인 기본 이미지입니다. 배포 이미지가 이미지 서비스에 로드되면 Bare Metal Provisioning 노드를 업데이트하여 배포 이미지를 부팅 이미지로 사용하도록 설정할 수 있습니다. 언더클라우드에서 오버클라우드를 배포 할 때 이미 사용되었기 때문에 배포 이미지를 생성할 필요가 없습니다. 배포 이미지는 다음과 같이 커널램디스크 의 두 부분으로 나눌 수 있습니다.

ironic-python-agent.kernel
ironic-python-agent.initramfs

이러한 이미지는 삭제하지 않은 경우 ~/stack/images 디렉터리에 있어야 합니다. 그렇지 않은 경우, 아직 rhosp-director-images-ips 패키지가 설치되어 있으면 이러한 이미지는 /usr/share/rhosp-director-images/ironic-python-agent*.el7ost.tar 파일에 있습니다.

이미지를 추출하여 이미지 서비스에 로드합니다.

# openstack image create --container-format aki --disk-format aki --public --file ./ironic-python-agent.kernel bm-deploy-kernel
# openstack image create --container-format ari --disk-format ari --public --file ./ironic-python-agent.initramfs bm-deploy-ramdisk

필요한 최종 이미지는 베어 메탈 프로비저닝 노드에 배포되는 실제 이미지입니다. 예를 들어 이미 cloud-init 가 있으므로 Red Hat Enterprise Linux KVM 이미지를 다운로드할 수 있습니다.

이미지 서비스에 이미지를 로드합니다.

# openstack image create --container-format bare --disk-format qcow2 --public --file ./IMAGE_FILE rhel

2.1.4. 베어 메탈 프로비저닝 서비스에 베어 메탈 프로비저닝 노드 추가

베어 메탈 프로비저닝 노드를 베어 메탈 프로비저닝 서비스에 추가하려면, 클라우드를 인스턴스화하고 필요에 따라 수정하는 데 사용된 instackenv.json 파일의 섹션을 복사합니다.

  1. overcloudrc 파일을 가져오고 .json 파일을 가져옵니다.

    # source ~stack/overcloudrc
    # openstack baremetal import --json ./baremetal.json
  2. 노드의 driver_info 섹션에 deploy_kerneldeploy_ramdisk 를 지정하여 배포된 이미지를 초기 부팅 이미지로 사용하도록 베어 메탈 노드를 업데이트합니다.

    # ironic node-update NODE_UUID add driver_info/deploy_kernel=DEPLOY_KERNEL_ID driver_info/deploy_ramdisk=DEPLOY_RAMDISK_ID

NODE_UUID 를 베어 메탈 노드의 UUID로 바꿉니다. director 노드에서 ironic node-list 명령을 실행하여 이 값을 가져올 수 있습니다. DEPLOY_KERNEL_ID 를 배포 커널 이미지의 ID로 바꿉니다. director 노드에서 glance image-list 명령을 실행하여 이 값을 가져올 수 있습니다. DEPLOY_RAMDISK_ID 를 배포 램디스크 이미지의 ID로 바꿉니다. director 노드에서 glance image-list 명령을 실행하여 이 값을 가져올 수 있습니다.

2.1.5. 베어 메탈 프로비저닝 노드 배포

nova boot 명령을 사용하여 베어 메탈 프로비저닝 노드를 배포합니다.

# nova  boot --image BAREMETAL_USER_IMAGE --flavor BAREMETAL_FLAVOR --nic net-id=IRONIC_NETWORK_ID --key default MACHINE_HOSTNAME

BAREMETAL_USER_IMAGE 를 이미지 서비스에 로드된 이미지, BAREMETAL_FLAVOR 을 베어 메탈 배포용 플레이버로, IRONIC_NETWORK_ID 를 OpenStack Networking 서비스의 베어 메탈 프로비저닝 네트워크의 ID로, MACHINE_HOSTNAME 을 배포 후 원하는 시스템의 호스트 이름으로 교체합니다.

2.2. 하드웨어 인트로스펙션 구성

하드웨어 인트로스펙션을 통해 베어 메탈 프로비저닝에서 노드에서 하드웨어 정보를 검색할 수 있습니다. 인트로스펙션은 검색된 이더넷 MAC 주소에 대한 포트도 생성합니다. 또는 각 노드에 하드웨어 세부 정보를 수동으로 추가할 수 있습니다. 자세한 내용은 2.3.2절. “수동으로 노드 추가” 을 참조하십시오. 다음 절차의 모든 단계는 root 사용자로 로그인하는 동안 Bare Metal Provisioning conductor 서비스를 호스팅하는 서버에서 수행해야 합니다.

하드웨어 인트로스펙션은 다음 드라이버를 사용하여 대역에서 지원됩니다.

  • pxe_drac
  • pxe_ipmitool
  • pxe_ssh

하드웨어 인트로스펙션 구성

  1. PXE 부팅을 통해 베어 메탈 시스템 검색에 사용되는 Ironic Python 에이전트 커널 및 램디스크 이미지를 가져옵니다. 이러한 이미지는 https://access.redhat.com/downloads/content/191/ver=8/rhel---7/8/x86_64/product-software https://access.redhat.com/downloads/content/191/ver=8/rhel---7/8/x86_64/product-software의 RHOSP director 8.0용 Ironic Python Agent Image 라는 TAR 아카이브에서 사용할 수 있습니다. TAR 아카이브를 다운로드하여 이미지 파일(ironic-python-agent.kernelironic-python-agent.initramfs)을 추출한 다음 이를 TFTP 서버의 /tftpboot 디렉터리에 복사합니다.
  2. 하드웨어 인트로스펙션 서비스를 호스팅할 서버에서 Red Hat OpenStack Platform 8 director for RHEL 7(RPM) 채널을 활성화합니다.

    # subscription-manager repos --enable=rhel-7-server-openstack-8-director-rpms
  3. openstack-ironic-inspector 패키지를 설치합니다.

    # yum install openstack-ironic-inspector
  4. ironic.conf 파일에서 인트로스펙션을 활성화합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       inspector enabled True
  5. 하드웨어 인트로스펙션 서비스가 별도의 서버에서 호스팅되는 경우, 컨덕터 서비스를 호스팅하는 서버에 해당 URL을 설정합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       inspector service_url http://INSPECTOR_IP:5050

    INSPECTOR_IP 를 하드웨어 인트로스펙션 서비스를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 교체합니다.

  6. 하드웨어 인트로스펙션 서비스에 인증 자격 증명을 제공합니다.

    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       keystone_authtoken identity_uri http://IDENTITY_IP:35357
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       keystone_authtoken auth_uri http://IDENTITY_IP:5000/v2.0
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       keystone_authtoken admin_user ironic
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       keystone_authtoken admin_password PASSWORD
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       keystone_authtoken admin_tenant_name services
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       ironic os_auth_url http://IDENTITY_IP:5000/v2.0
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       ironic os_username ironic
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       ironic os_password PASSWORD
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       ironic os_tenant_name service
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       firewall dnsmasq_interface br-ironic
    # openstack-config --set /etc/ironic-inspector/inspector.conf \
       database connection sqlite:////var/lib/ironic-inspector/inspector.sqlite

    다음 값을 바꿉니다.

    • IDENTITY_IP 를 ID 서버의 IP 주소 또는 호스트 이름으로 교체합니다.
    • Bare Metal Provisioning에서 Identity로 인증하는 데 사용하는 암호로 PASSWORD 를 바꿉니다.
  7. 필요한 경우 램디스크 로그를 저장하도록 하드웨어 인트로스펙션 서비스를 설정합니다.

    # openstack-config --set /etc/ironic-inspector/inspector.conf \
    processing ramdisk_logs_dir /var/log/ironic-inspector/ramdisk
  8. 선택적으로 여러 로컬 디스크를 사용하여 베어 메탈 머신에서 블록 장치를 수집하고 루트 장치를 노출하는 추가 데이터 처리 플러그인을 활성화합니다. ramdisk_error,root_disk_selection,scheduler, validate_interfaces 는 기본적으로 활성화되어 있으므로 비활성화해서는 안 됩니다. 다음 명령은 root_device_hint 를 목록에 추가합니다.

    # openstack-config --set /etc/ironic-inspector/inspector.conf \
    processing processing_hooks '$default_processing_hooks,root_device_hint'
  9. 초기 ironic inspector 데이터베이스를 생성합니다.

    # ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade
  10. ironic-inspector가 소유하도록 inspector 데이터베이스 파일을 업데이트합니다.

    # chown ironic-inspector /var/lib/ironic-inspector/inspector.sqlite
  11. 텍스트 편집기에서 /etc/ironic-inspector/dnsmasq.conf 파일을 열고 openstack-ironic-inspector-dnsmasq 서비스에 대해 다음 PXE 부팅 설정을 구성합니다.

    port=0
    interface=br-ironic
    bind-interfaces
    dhcp-range=START_IP,END_IP
    enable-tftp
    tftp-root=/tftpboot
    dhcp-boot=pxelinux.0

    다음 값을 바꿉니다.

    • INTERFACE 를 Bare Metal Provisioning Network 인터페이스의 이름으로 바꿉니다.
    • START_IP 를 유동 IP 주소가 할당될 IP 주소 범위의 시작을 나타내는 IP 주소로 바꿉니다.
    • END_IP 를 유동 IP 주소가 할당될 IP 주소 범위의 끝을 나타내는 IP 주소로 바꿉니다.
  12. syslinux 부트로더tftp 디렉터리에 복사합니다.

    # cp /usr/share/syslinux/pxelinux.0 /tftpboot/pxelinux.0
  13. 선택적으로 /etc/ironic-inspector/inspector.conf 파일의 swift 섹션에 메타데이터를 저장하도록 하드웨어 인트로스펙션 서비스를 구성할 수 있습니다.

    [swift]
    username = ironic
    password = PASSWORD
    tenant_name = service
    os_auth_url = http://IDENTITY_IP:5000/v2.0

    다음 값을 바꿉니다.

    • IDENTITY_IP 를 ID 서버의 IP 주소 또는 호스트 이름으로 교체합니다.
    • Bare Metal Provisioning에서 Identity로 인증하는 데 사용하는 암호로 PASSWORD 를 바꿉니다.
  14. 텍스트 편집기에서 /tftpboot/pxelinux.cfg/default 파일을 열고 다음 옵션을 구성합니다.

    default discover
    
    label discover
    kernel ironic-python-agent.kernel
    append initrd=ironic-python-agent.initramfs \
    ipa-inspection-callback-url=http://INSPECTOR_IP:5050/v1/continue
    ipa-api-url=http://IRONIC_API_IP:6385
    
    ipappend 3

    INSPECTOR_IP 를 하드웨어 인트로스펙션 서비스를 호스팅하는 서버의 IP 주소 또는 호스트 이름으로 교체합니다. 위의 블록에서 \ 표시된 대로 /continue 에 추가되는 텍스트는 한 줄에 있어야 합니다.

  15. /tftpboot/ 디렉터리 및 해당 파일의 보안 컨텍스트를 재설정합니다.

    # restorecon -R /tftpboot/

    이 단계에서는 디렉터리에 올바른 SELinux 보안 레이블이 있고 dnsmasq 서비스가 디렉터리에 액세스할 수 있습니다.

  16. 하드웨어 인트로스펙션 서비스 및 dnsmasq 서비스를 시작하고 부팅 시 시작되도록 구성합니다.

    # systemctl start openstack-ironic-inspector.service
    # systemctl enable openstack-ironic-inspector.service
    # systemctl start openstack-ironic-inspector-dnsmasq.service
    # systemctl enable openstack-ironic-inspector-dnsmasq.service

    하드웨어 인트로스펙션은 베어 메탈 프로비저닝에 등록된 후 노드에서 사용할 수 있습니다.

2.3. 물리적 머신을 베어 메탈 노드로 추가

인스턴스를 프로비저닝할 물리적 시스템을 노드로 추가하고 Compute에서 사용 가능한 하드웨어를 볼 수 있는지 확인합니다. 컴퓨팅의 리소스 추적기가 주기적으로 동기화되므로 Compute에 새 리소스에 대한 즉시 알림이 표시되지 않습니다. 다음 주기 작업이 실행된 후 변경 사항이 표시됩니다. 이 값인 scheduler_driver_task_period/etc/nova/nova.conf 에서 업데이트할 수 있습니다. 기본 기간은 60초입니다.

시스템이 베어 메탈 노드로 등록된 후 하드웨어 세부 정보를 검색하거나 수동으로 추가할 수 있습니다.

2.3.1. 하드웨어 인트로스펙션을 사용하여 노드 추가

물리적 머신을 베어 메탈 노드로 등록한 다음 openstack-ironic-inspector 를 사용하여 노드의 하드웨어 세부 정보를 감지하고 각 이더넷 MAC 주소에 대한 포트를 생성합니다. 다음 절차의 모든 단계는 root 사용자로 로그인하는 동안 Bare Metal Provisioning conductor 서비스를 호스팅하는 서버에서 수행해야 합니다.

하드웨어 인트로스펙션을 사용하여 노드 추가

  1. 관리자로 Identity를 사용하도록 쉘을 설정합니다.

    # source ~/keystonerc_admin
  2. 새 노드를 추가합니다.

    # ironic node-create -d DRIVER_NAME

    DRIVER_NAME 을 Bare Metal Provisioning이 이 노드를 프로비저닝하는 데 사용할 드라이버 이름으로 바꿉니다. /etc/ironic/ironic.conf 파일에서 이 드라이버를 활성화해야 합니다. 노드를 생성하려면 최소한 드라이버 이름을 지정해야 합니다.

    중요

    노드의 고유 식별자를 기록해 둡니다.

  3. 논리적 이름 또는 UUID로 노드를 참조할 수 있습니다. 선택적으로 노드에 논리 이름을 할당합니다.

    # ironic node-update NODE_UUID add name=NAME

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. NAME 을 노드의 논리 이름으로 바꿉니다.

  4. 드라이버에 필요한 노드 정보를 확인한 다음 베어 메탈 프로비저닝에서 노드를 관리할 수 있도록 노드 드라이버 정보를 업데이트합니다.

    # ironic driver-properties DRIVER_NAME
    # ironic node-update NODE_UUID add \
       driver_info/PROPERTY=VALUE \
       driver_info/PROPERTY=VALUE

    다음 값을 바꿉니다.

    • DRIVER_NAME 을 속성을 표시할 드라이버의 이름으로 바꿉니다. /etc/ironic/ironic.conf 파일에서 드라이버가 활성화되어 있지 않으면 정보가 반환되지 않습니다.
    • NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.
    • PROPERTYironic driver-properties 명령에서 반환하는 필수 속성으로 바꿉니다.
    • VALUE 를 해당 속성에 유효한 값으로 바꿉니다.
  5. 배포 커널을 지정하고 노드 드라이버의 램디스크를 배포합니다.

    # ironic node-update NODE_UUID add \
      driver_info/deploy_kernel=KERNEL_UUID \
      driver_info/deploy_ramdisk=INITRAMFS_UUID

    다음 값을 바꿉니다.

    • NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.
    • KERNEL_UUID 를 이미지 서비스에 업로드된 .kernel 이미지의 고유 식별자로 바꿉니다.
    • INITRAMFS_UUID 를 이미지 서비스에 업로드된 .initramfs 이미지의 고유 식별자로 바꿉니다.
  6. PXE 또는 가상 미디어를 통해 대신 노드의 디스크에 설치된 로컬 부트 로더에서 초기 배포 후 재부팅하도록 노드를 구성합니다. 노드를 프로비저닝하는 데 사용되는 플레이버에도 로컬 부팅 기능을 설정해야 합니다. 로컬 부팅을 활성화하려면 노드에 사용되는 이미지에 grub2 가 포함되어야 합니다. 로컬 부팅을 구성합니다.

    # ironic node-update NODE_UUID add \
       properties/capabilities="boot_option:local"

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.

  7. 베어 메탈 노드를 manageable 상태로 이동합니다.

    # ironic node-set-provision-state NODE_UUID manage

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.

  8. 인트로스펙션을 시작합니다.

    # openstack baremetal introspection start NODE_UUID --discoverd-url http://overcloud IP:5050
    • NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다. 노드를 프로비저닝하기 전에 노드 검색 및 인트로스펙션 프로세스를 실행하여 완료해야 합니다. 노드 인트로스펙션 상태를 확인하려면 ironic node-list 를 실행하고 Provision State 를 찾습니다. 인트로스펙션에 성공한 후 노드가 사용 가능 상태가 됩니다.
    • 오버클라우드 IPironic.conf 에 이전에 설정한 service_url 값으로 바꿉니다.
  9. 노드 설정을 확인합니다.

    # ironic node-validate NODE_UUID
    +------------+--------+----------------------------+
    | Interface  | Result | Reason                     |
    +------------+--------+----------------------------+
    | console    | None   | not supported              |
    | deploy     | True   |                            |
    | inspect    | True   |                            |
    | management | True   |                            |
    | power      | True   |                            |
    +------------+--------+----------------------------+

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다. 위의 명령 출력은 각 인터페이스에 대해 True 또는 None 을 보고해야 합니다. None 으로 표시된 인터페이스는 구성되지 않은 인터페이스 또는 드라이버에서 지원되지 않는 인터페이스입니다.

2.3.2. 수동으로 노드 추가

물리적 머신을 베어 메탈 노드로 등록한 다음 수동으로 하드웨어 세부 정보를 추가하고 각 이더넷 MAC 주소에 대한 포트를 생성합니다. 다음 절차의 모든 단계는 root 사용자로 로그인하는 동안 Bare Metal Provisioning conductor 서비스를 호스팅하는 서버에서 수행해야 합니다.

하드웨어 인트로스펙션 없이 노드 추가

  1. 관리자로 Identity를 사용하도록 쉘을 설정합니다.

    # source ~/keystonerc_admin
  2. 새 노드를 추가합니다.

    # ironic node-create -d DRIVER_NAME

    DRIVER_NAME 을 Bare Metal Provisioning이 이 노드를 프로비저닝하는 데 사용할 드라이버 이름으로 바꿉니다. /etc/ironic/ironic.conf 파일에서 이 드라이버를 활성화해야 합니다. 노드를 생성하려면 최소한 드라이버 이름을 지정해야 합니다.

    중요

    노드의 고유 식별자를 기록해 둡니다.

  3. 논리적 이름 또는 UUID로 노드를 참조할 수 있습니다. 선택적으로 노드에 논리 이름을 할당합니다.

    # ironic node-update NODE_UUID add name=NAME

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. NAME 을 노드의 논리 이름으로 바꿉니다.

  4. 드라이버에 필요한 노드 정보를 확인한 다음 베어 메탈 프로비저닝에서 노드를 관리할 수 있도록 노드 드라이버 정보를 업데이트합니다.

    # ironic driver-properties DRIVER_NAME
    # ironic node-update NODE_UUID add \
       driver_info/PROPERTY=VALUE \
       driver_info/PROPERTY=VALUE

    다음 값을 바꿉니다.

    • DRIVER_NAME 을 속성을 표시할 드라이버의 이름으로 바꿉니다. /etc/ironic/ironic.conf 파일에서 드라이버가 활성화되어 있지 않으면 정보가 반환되지 않습니다.
    • NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.
    • PROPERTYironic driver-properties 명령에서 반환하는 필수 속성으로 바꿉니다.
    • VALUE 를 해당 속성에 유효한 값으로 바꿉니다.
  5. 배포 커널을 지정하고 노드 드라이버의 램디스크를 배포합니다.

    # ironic node-update NODE_UUID add \
      driver_info/deploy_kernel=KERNEL_UUID \
      driver_info/deploy_ramdisk=INITRAMFS_UUID

    다음 값을 바꿉니다.

    • NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.
    • KERNEL_UUID 를 이미지 서비스에 업로드된 .kernel 이미지의 고유 식별자로 바꿉니다.
    • INITRAMFS_UUID 를 이미지 서비스에 업로드된 .initramfs 이미지의 고유 식별자로 바꿉니다.
  6. 노드의 하드웨어 사양과 일치하도록 노드의 속성을 업데이트합니다.

    # ironic node-update NODE_UUID add \
       properties/cpus=CPU \
       properties/memory_mb=RAM_MB \
       properties/local_gb=DISK_GB \
       properties/cpu_arch=ARCH

    다음 값을 바꿉니다.

    • NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.
    • CPU 를 사용할 CPU 수로 바꿉니다.
    • RAM_MB 를 사용할 RAM(MB)으로 바꿉니다.
    • DISK_GB 를 사용할 디스크 크기(GB)로 바꿉니다.
    • ARCH 를 사용할 아키텍처 유형으로 교체합니다.
  7. PXE 또는 가상 미디어를 통해 대신 노드의 디스크에 설치된 로컬 부트 로더에서 초기 배포 후 재부팅하도록 노드를 구성합니다. 노드를 프로비저닝하는 데 사용되는 플레이버에도 로컬 부팅 기능을 설정해야 합니다. 로컬 부팅을 활성화하려면 노드에 사용되는 이미지에 grub2 가 포함되어야 합니다. 로컬 부팅을 구성합니다.

    # ironic node-update NODE_UUID add \
       properties/capabilities="boot_option:local"

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다.

  8. 노드의 네트워크 인터페이스 카드를 Bare Metal Provisioning에 알립니다. 각 NIC의 MAC 주소로 포트를 생성합니다.

    # ironic port-create -n NODE_UUID -a MAC_ADDRESS

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. MAC_ADDRESS 를 노드의 NIC의 MAC 주소로 바꿉니다.

  9. 노드 설정을 확인합니다.

    # ironic node-validate NODE_UUID
    +------------+--------+----------------------------+
    | Interface  | Result | Reason                     |
    +------------+--------+----------------------------+
    | console    | None   | not supported              |
    | deploy     | True   |                            |
    | inspect    | None   | not supported              |
    | management | True   |                            |
    | power      | True   |                            |
    +------------+--------+----------------------------+

    NODE_UUID 를 노드의 고유 식별자로 바꿉니다. 또는 노드의 논리 이름을 사용합니다. 위의 명령 출력은 각 인터페이스에 대해 True 또는 None 을 보고해야 합니다. None 으로 표시된 인터페이스는 구성되지 않은 인터페이스 또는 드라이버에서 지원되지 않는 인터페이스입니다.

2.4. 호스트 집계를 사용하여 물리적 및 가상 머신 프로비저닝 분리

호스트 집계는 OpenStack Compute에서 가용성 영역을 분할하고 특정 공유 속성을 함께 사용하여 노드를 그룹화하는 데 사용됩니다. 키 값 쌍은 호스트 집계와 인스턴스 플레이버에서 모두 설정되어 이러한 속성을 정의합니다. 인스턴스를 프로비저닝하면 Compute의 키 값 쌍을 플레이버의 키 값 쌍과 호스트 집계에 할당된 키 값 쌍과 비교하고, 인스턴스가 물리적 시스템에서 또는 openstack-nova-compute 노드의 가상 머신으로 올바른 집계로 프로비저닝되도록 합니다.

베어 메탈 머신과 가상 머신을 모두 프로비저닝하도록 Red Hat OpenStack Platform 환경이 설정된 경우 호스트 집계를 사용하여 물리적 머신 또는 가상 머신으로 생성할 인스턴스를 지시합니다. 아래 절차에서는 베어 메탈 호스트에 대한 호스트 집계를 생성하고 호스트 유형이 baremetal 임을 지정하는 키 값 쌍을 추가합니다. 이 집계로 그룹화된 모든 베어 메탈 노드는 이 키 값 쌍을 상속합니다. 그런 다음 인스턴스를 프로비저닝하는 데 사용할 플레이버에 동일한 키 값 쌍이 추가됩니다.

베어 메탈 머신을 프로비저닝하는 데 사용할 이미지 또는 이미지가 hypervisor_type=ironic 속성 세트를 사용하여 이미지 서비스에 업로드된 경우 스케줄러는 스케줄링 결정에 해당 키 쌍 값도 사용합니다. 이미지 속성이 적용되지 않는 상황에서 효과적으로 스케줄링하려면 이미지 속성 설정 외에도 호스트 집계를 설정합니다. 이미지 빌드 및 업로드에 대한 자세한 내용은 2.1.3절. “베어 메탈 이미지 생성” 을 참조하십시오.

베어 메탈 프로비저닝을 위한 호스트 집계 생성

  1. 기본 nova 가용성 영역에서 baremetal 의 호스트 집계를 생성합니다.

    # nova aggregate-create baremetal nova
  2. 집계된 하이퍼바이저_type=ironic 속성에 추가된 호스트를 할당할 baremetal 집계의 메타데이터를 설정합니다.

    # nova aggregate-set-metadata baremetal hypervisor_type=ironic
  3. 베어 메탈 프로비저닝 드라이버가 포함된 openstack-nova-compute 노드를 baremetal 집계에 추가합니다.

    # nova aggregate-add-host baremetal COMPUTE_HOSTNAME

    COMPUTE_HOSTNAMEopenstack-nova-compute 서비스를 호스팅하는 시스템의 호스트 이름으로 바꿉니다. 모든 베어 메탈 프로비저닝 요청을 처리하는 데 전용 컴퓨팅 호스트를 사용해야 합니다.

  4. 베어 메탈 노드를 프로비저닝하기 위해 생성한 플레이버 또는 플레이버에 ironic 하이퍼바이저 속성을 추가합니다.

    # nova flavor-key FLAVOR_NAME set hypervisor_type="ironic"

    192.0.2. AVOR_NAME 을 플레이버의 이름으로 바꿉니다.

  5. /etc/nova/nova.confscheduler_default_filters 아래의 기존 목록에 다음 Compute 필터 스케줄러를 추가합니다.

    AggregateInstanceExtraSpecsFilter

    이 필터를 사용하면 Compute 스케줄러에서 호스트 집계에 할당된 키 값 쌍을 처리할 수 있습니다.

2.5. 예: SSH 및 Virsh를 사용하여 베어 메탈 프로비저닝 테스트

단일 물리적 호스트에서 베어 메탈 노드 역할을 하는 두 개의 가상 머신에 인스턴스를 배포하여 베어 메탈 프로비저닝 설정을 테스트합니다. libvirtvirsh 를 사용하여 가상 머신 모두 가상화됩니다.

중요

SSH 드라이버는 테스트 및 평가 목적으로만 사용됩니다. Red Hat OpenStack Platform 엔터프라이즈 환경에는 사용하지 않는 것이 좋습니다.

이 시나리오에는 다음 리소스가 필요합니다.

  • 오버클라우드 노드에 Bare Metal Provisioning 서비스가 구성된 Red Hat OpenStack Platform 환경. 이 가이드의 모든 단계를 완료해야 합니다.
  • Red Hat Enterprise Linux 7.2 및 libvirt 가상화 툴이 설치된 베어 메탈 머신 1개 이 시스템은 가상화된 베어 메탈 노드를 포함하는 호스트 역할을 합니다.
  • 베어 메탈 프로비저닝 노드와 가상화된 베어 메탈 노드가 포함된 호스트 간의 네트워크 연결 1개 이 네트워크는 베어 메탈 프로비저닝 네트워크 역할을 합니다.

2.5.1. 가상화된 베어 메탈 노드 생성

테스트 시나리오에서 베어 메탈 노드 역할을 하는 두 개의 가상 머신을 생성합니다. 노드를 Node1Node2 라고 합니다.

가상화된 베어 메탈 노드 생성

  1. libvirt 호스트에서 가상 머신 관리자에 액세스합니다.
  2. 다음 구성을 사용하여 두 개의 가상 머신을 생성합니다.

    • 1 vCPU
    • 2048MB 메모리
    • Network Boot (PXE)
    • 20GB 스토리지
    • 네트워크 소스:호스트 장치 eth0: macvtap소스 모드:브리지. macvtap을 선택하면 호스트의 이더넷 네트워크 인터페이스를 공유할 가상 시스템을 설정합니다. 이렇게 하면 베어 메탈 프로비저닝 노드가 가상화된 노드에 직접 액세스할 수 있습니다.
  3. 두 가상 머신을 모두 종료합니다.

2.5.2. SSH 키 쌍 만들기

베어 메탈 프로비저닝 노드가 libvirt 호스트에 연결할 수 있는 SSH 키 쌍을 만듭니다.

SSH 키 쌍 생성

  1. 베어 메탈 프로비저닝 노드에서 새 SSH 키를 생성합니다.

    # ssh-keygen -t rsa -b 2048 -C "user@domain.com" -f ./virtkey

    user@domain.com 를 이 키를 식별하는 이메일 주소 또는 기타 주석으로 교체합니다. 명령에서 암호를 입력하라는 메시지를 표시하면 Enter 를 눌러 암호 없이 진행합니다. 명령은 개인 키(virtkey)와 공개 키(virtkey.pub)의 두 파일을 생성합니다.

  2. 공개 키의 콘텐츠를 libvirt 호스트 root 사용자의 /root/.ssh/authorized_keys 파일에 복사합니다.

    # ssh-copy-id -i virtkey root@LIBVIRT_HOST

    LIBVIRT_HOSTlibvirt 호스트의 IP 주소 또는 호스트 이름으로 바꿉니다.

노드가 등록될 때 개인 키(virtkey)가 사용됩니다.

2.5.3. 가상화된 노드를 베어 메탈 노드로 추가

인스턴스를 프로비저닝할 가상 머신을 노드로 추가합니다. 이 예에서는 드라이버 세부 정보가 수동으로 제공되며 하드웨어 인트로스펙션을 사용하여 노드 세부 정보가 검색됩니다. 노드 세부 정보는 노드별로 수동으로 추가할 수도 있습니다. 자세한 내용은 2.3.2절. “수동으로 노드 추가”를 참조하십시오.

가상화된 노드를 베어 메탈 노드로 추가

  1. Bare Metal Provisioning conductor 서비스 노드에서 pxe_ssh 드라이버를 활성화합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       DEFAULT enabled_drivers pxe_ssh

    기존 드라이버 목록에 pxe_ssh 를 추가하는 경우 파일을 열고 쉼표로 구분된 enabled_drivers 목록에 드라이버를 추가합니다.

  2. 관리자로 Identity를 사용하도록 쉘을 설정합니다.

    # source ~/keystonerc_admin
  3. 첫 번째 노드를 추가하고 libvirt 호스트의 SSH 세부 정보를 등록합니다.

    # ironic node-create -d pxe_ssh -n Node1 \
       -i ssh_virt_type=virsh \
       -i ssh_username=root \
       -i ssh_key_filename=VIRTKEY_FILE_PATH \
       -i ssh_address=LIBVIRT_HOST_IP \
       -i deploy_kernel=KERNEL_UUID \
       -i deploy_ramdisk=INITRAMFS_UUID

    다음 값을 바꿉니다.

    • VIRTKEY_FILE_PATHvirtkey SSH 개인 키 파일의 절대 파일 경로로 바꿉니다.
    • LIBVIRT_HOST_IPlibvirt 호스트의 IP 주소 또는 호스트 이름으로 교체합니다.
    • KERNEL_UUID 를 이미지 서비스에 업로드된 .kernel 이미지의 고유 식별자로 바꿉니다.
    • INITRAMFS_UUID 를 이미지 서비스에 업로드된 .initramfs 이미지의 고유 식별자로 바꿉니다.
  4. 위와 동일한 명령을 사용하여 두 번째 노드를 추가하고 Node1Node2 로 바꿉니다.
  5. PXE 또는 가상 미디어를 통해 대신 노드의 디스크에 설치된 로컬 부트 로더에서 초기 배포 후 재부팅하도록 노드를 구성합니다. 노드를 프로비저닝하는 데 사용할 플레이버에도 로컬 부팅 기능이 설정되어 있어야 합니다. 로컬 부팅을 활성화하려면 노드에 사용되는 이미지에 grub2 가 포함되어야 합니다. 로컬 부팅을 구성합니다.

    # ironic node-update Node1 add \
       properties/capabilities="boot_option:local"
    # ironic node-update Node2 add \
       properties/capabilities="boot_option:local"
  6. 노드를 manageable 상태로 이동합니다.

    # ironic node-set-provision-state Node1 manage
    # ironic node-set-provision-state Node2 manage
  7. 노드에서 인트로스펙션을 시작합니다.

    # ironic node-set-provision-state Node1 inspect
    # ironic node-set-provision-state Node2 inspect

    노드를 프로비저닝하기 전에 노드 검색 및 인트로스펙션 프로세스를 실행하여 완료해야 합니다. 노드 인트로스펙션 상태를 확인하려면 ironic node-list 를 실행하고 Provision State 를 찾습니다. 인트로스펙션에 성공한 후 노드가 available 상태가 됩니다.

  8. 노드 설정을 확인합니다.

    # ironic node-validate Node1
    # ironic node-validate Node2
    +------------+--------+----------------------------+
    | Interface  | Result | Reason                     |
    +------------+--------+----------------------------+
    | console    | None   | not supported              |
    | deploy     | True   |                            |
    | inspect    | True   |                            |
    | management | True   |                            |
    | power      | True   |                            |
    +------------+--------+----------------------------+

    위의 명령 출력은 각 인터페이스에 대해 True 또는 None 을 보고해야 합니다. None 으로 표시된 인터페이스는 구성되지 않은 인터페이스 또는 드라이버에서 지원되지 않는 인터페이스입니다.

  9. 노드가 성공적으로 추가되면 3장. 베어 메탈 인스턴스 시작 를 사용하여 두 개의 인스턴스를 시작합니다.

3장. 베어 메탈 인스턴스 시작

등록된 베어 메탈 노드에 물리적 시스템을 프로비저닝합니다. 인스턴스는 명령줄 또는 OpenStack 대시보드에서 시작할 수 있습니다.

3.1. 명령줄 인터페이스를 사용하여 인스턴스 배포

nova 명령줄 인터페이스를 사용하여 베어 메탈 인스턴스를 배포합니다.

명령줄에서 인스턴스 배포

  1. 관리자로 ID에 액세스하도록 쉘을 설정합니다.

    # source ~/keystonerc_admin
  2. 인스턴스를 배포합니다.

    # nova boot --nic net-id=NETWORK_UUID --flavor FLAVOR_NAME --image IMAGE_UUID INSTANCE_NAME

    다음 값을 바꿉니다.

    • NETWORK_UUID 를 Bare Metal Provisioning과 함께 사용하기 위해 생성된 네트워크의 고유 식별자로 바꿉니다.
    • Cryo statAVOR_NAME 을 노드에 대해 생성된 플레이버의 이름으로 바꿉니다.
    • IMAGE_UUID 를 이미지 서비스에 업로드된 디스크 이미지의 고유 식별자로 바꿉니다.
    • INSTANCE_NAME 을 베어 메탈 인스턴스의 이름으로 바꿉니다.
  3. 인스턴스 상태를 확인합니다.

    # nova list

3.2. 대시보드를 사용하여 인스턴스 배포

대시보드 그래픽 사용자 인터페이스를 사용하여 베어 메탈 인스턴스를 배포합니다.

대시보드에서 인스턴스 배포

  1. https://DASHBOARD_IP/dashboard 에서 대시보드에 로그인합니다.
  2. 프로젝트 > Compute > Instances를클릭합니다.
  3. Launch Instance 를 클릭합니다.
  4. 세부 정보 탭에서 다음 필드를 작성합니다.

    • 인스턴스 이름을 지정합니다.
    • 베어 메탈 노드에 대해 생성된 플레이버 를 선택합니다.
    • 인스턴스 수 목록에서 1 선택합니다.
    • Instance Boot Source 목록에서 Boot from image 를 선택합니다.
    • 이미지 이름 목록에서 운영 체제 디스크 이미지를 선택합니다.
  5. Networking (네트워킹) 탭에서 Available Networks 에서 Selected Networks 로 필요한 네트워크를 끌어다 놓습니다. 여기에서 Bare Metal Provisioning용으로 생성된 공유 네트워크가 선택되어 있는지 확인합니다.
  6. 시작을 클릭합니다.

3.3. Windows 이미지 만들기

이 절차에서는 Windows Server 2012에 대한 배포 이미지를 생성합니다. Red Hat Enterprise Linux 시스템에서 다음 단계를 수행합니다.

  1. virtio-win 드라이버를 다운로드합니다. 필요한 단계는 Red Hat 고객 포털을 참조하십시오.

    결과적으로 virtio-win .iso 파일이 /usr/share/virtio-win/ 로 다운로드됩니다. 예: /usr/share/virtio-win/virtio-win-1.8.0.iso

  2. virt-manager 를 사용하여 Windows Server 2012 템플릿 VM을 생성합니다.

    • Windows 템플릿의 가상 하드웨어 요구 사항을 확인합니다. 이 예에서는 1 x CPU, 4GB RAM, 10GB HDD, 2 x NIC 및 2 x 가상 CD-ROM 드라이브를 사용합니다.
    • qcow2 파일로 디스크를 생성합니다.
    • 가상 HDD 및 NIC 드라이버를 virtio 로 설정합니다.
    • Windows Server 2012 R2 .iso 파일 및 virtio-win-1.8.0 .iso 파일에 마운트된 2x 가상 CD-ROM 드라이브를 연결합니다. Windows 설치 프로세스 중에 virtio-win 드라이버를 설치하려면 두 개의 가상 CD-ROM이 필요합니다.
  3. ISO 이미지에서 수동으로 Windows를 설치합니다.

    • Windows Server 2012 R2의 평가 .iso 이미지에서 Windows 설치를 시작합니다.
    • HDD 드라이버를 선택할 수 있는 경우 virtio-win-1.8.0.iso 파일이 포함된 두 번째 가상 CD-ROM에서 드라이버를 선택합니다.
  4. 설치 후 Windows 검사를 수행합니다.

    장치 관리자를 열고 모든 장치가 올바르게 인식되고 물음표 경고가 없는지 확인합니다. 특히 NIC, 직렬 및 balloon 드라이버가 VirtIO 드라이버를 사용하고 있는지 확인합니다. 장치가 올바르게 인식되지 않으면 virtio-win 드라이버 디스크에서 드라이버를 적용합니다.

  5. sysprep 실행 :

    sysprep을 사용하면 Windows 설치가 일반화되어 이전에 수행된 단일 설치와 관련된 설치 정보가 제거됩니다. 이를 통해 VM의 가상 하드 디스크를 다른 시스템에 여러 번 설치하기 위한 템플릿으로 사용할 수 있습니다.

    1. C:\Windows\System32\sysprep\sysprep.exe에서 Sysprep 을 실행합니다.
    2. Sysprep 툴에 다음 정보를 입력합니다.

      • 시스템 정리 작업 의 경우 Enter System Out-of-Box-Experience (ECDHEBE)를 선택합니다.
      • Generalize 확인란을 선택합니다.
      • 에서 Options.를 선택합니다.
    3. OK 를 클릭하여 sysprep 프로세스를 완료합니다. 완료되면 가상 머신이 자동으로 종료됩니다.
  6. Image 서비스(glance)에 Windows 이미지를 등록합니다. 이 단계는 Windows 설치의 qcow2 HDD를 한눈에 등록합니다. 이 예에서는 디스크 파일 /root/win2012r2.qcow2 를 사용합니다.

    $ glance image-create --file /root/win2012r2.qcow2 --disk-format qcow2 --container-format bare --name win2012r2 --is-public True --progress
    [=============================>] 100%

3.3.1. 물리적 서버에 Windows 배포

  1. 하드웨어 구성 요소를 지정하여 ironic에 물리적 노드를 등록합니다. 예를 들면 다음과 같습니다.

    # ironic node-create -d fake_pxe -p cpus=1 -p memory_mb=1024 -p local_gb=15 -p cpu_arch=amd64
  2. 새 노드의 UUID를 검색합니다.

    # ironic node-list
  3. 물리적 Windows 노드의 MAC 주소와 일치하는 노드의 포트를 만듭니다.

    # ironic port-create -n [NODE_UUID] -a [NIC_MAC]

    예를 들면 다음과 같습니다.

    # ironic port-create -n 3b3d3fd4-4621-427f-a78d-054a1ef17a0a -a 52:54:00:85:76:53
  4. 노드를 유지보수 모드로 설정합니다.

    # ironic node-set-maintenance [NODE_UUID] true
    # ironic node-set-provision-state [NODE_UUID] manage
  5. 새 노드의 인트로스펙션을 수행합니다.

    # openstack baremetal introspection start [NODE_UUID] --discoverd-url http://[KEYSTONE_URL]:5050
    • [KEYSTONE_URL] 을 keystone 서비스의 IP 주소로 바꿉니다.

      참고: CryostatKE_PXE 드라이버를 사용하는 경우 ironic node-list 상태가 이동되어 wait-callback을 배포 할 때 노드의 전원을 수동으로 켭니다.

  6. 인트로스펙션이 완료되면 유지보수 모드를 끕니다.

    # ironic node-set-maintenance [NODE UUID] false
    # ironic node-set-provision-state [NODE UUID] provide
  7. 인스턴스에 대한 인증을 위한 키 쌍을 만듭니다.

    # nova keypair-add --pub_key ~/.ssh/id_rsa.pub [KEY_NAME]
  8. 노드의 로컬 부팅을 활성화합니다.

    # ironic node-update [NODE_UUID] add properties/capabilities="boot_option:local"
  9. nova 를 사용하여 노드를 부팅합니다.

    # nova boot --nic net-id=[NETWORK_UUID] --flavor [FLAVOR_NAME] --image [IMAGE_UUID/IMAGE_NAME] --keyname [INSTANCE_NAME]

    다음 값을 바꿉니다.

    • [NETWORK_UUID] 를 Bare Metal Provisioning과 함께 사용하기 위해 생성된 네트워크의 고유 식별자로 바꿉니다.
    • [FLAVOR_NAME] 을 노드에 대해 생성된 플레이버의 이름으로 교체합니다.
    • [IMAGE_UUID] 를 이미지 서비스에 업로드된 디스크 이미지의 고유 식별자로 바꿉니다.
    • [INSTANCE_NAME] 을 베어 메탈 인스턴스의 이름으로 바꿉니다.
  10. 인스턴스 암호를 검색합니다.

    # nova get-password [INSTANCE_NAME]  /path/to/your/keypairs/private/key
  11. 인스턴스 상태를 검토합니다.

    # nova list

대시보드의 콘솔을 사용하여 인스턴스에 액세스하여 추가로 테스트할 수 있습니다.

3.3.2. 원격 데스크탑 액세스 활성화

  1. TCP/UDP 3389 에서 원격 데스크탑 트래픽을 허용하는 보안 그룹 규칙을 추가합니다.
  2. nova 명령을 사용하여 보안 키를 검색합니다.

    # nova get-password [INSTANCE_NAME] /path/to/your/keypairs/private/key
    • [INSTANCE_NAME] 을 베어 메탈 인스턴스의 이름으로 바꿉니다.

4장. 베어 메탈 프로비저닝 문제 해결

다음 섹션에는 베어 메탈 프로비저닝 설정에서 문제를 진단하는 데 유용할 수 있는 정보와 단계가 포함되어 있습니다.

인트로스펙션을 통한 베어 메탈 프로비저닝에서는 네 가지 서비스를 사용합니다. openstack-ironic-api, openstack-ironic-conductor, openstack-ironic-inspector, openstack-ironic-inspector-dnsmasq. 대부분의 OpenStack 구성 요소의 로그는 /var/log 디렉토리에서 확인할 수 있습니다.

4.1. PXE 부팅 오류 문제 해결

권한 거부 오류

베어 메탈 프로비저닝 노드의 콘솔에서 permission denied 오류가 발생하는 경우 다음과 같이 적절한 SELinux 콘텐츠를 /httpboot/tftpboot 디렉터리에 적용했는지 확인합니다.

# semanage fcontext -a -t httpd_sys_content_t "/httpboot(/.*)?"
# semanage fcontext -a -t tftpdir_t "/tftpboot(/.*)?"

Boot Process Freezes at /pxelinux.cfg/XX-XX-XX-XX-XX-XX

노드의 콘솔에서 IP 주소가 표시된 것처럼 표시되면 다음과 같이 프로세스가 중지됩니다.

PXE Process Freezes During Boot

이는 ironic.conf 파일에서 잘못된 PXE 부팅 템플릿을 사용할 수 있음을 나타냅니다.

# grep ^pxe_config_template ironic.conf
pxe_config_template=$pybasedir/drivers/modules/ipxe_config.template

기본 템플릿은 pxe_config.template 이므로 iipxe_config.template 으로 변환하는 것은 쉽습니다.

4.2. 베어 메탈 노드 부팅 후 로그인 오류 문제 해결

구성 단계에서 설정한 루트 암호를 사용하여 노드의 콘솔의 로그인 프롬프트에서 로그인하려고 하면 배포된 이미지로 부팅할 수 없음을 나타냅니다. deploy-kernel/deploy-ramdisk 이미지에 있고 시스템은 아직 올바른 이미지를 가져오지 않았습니다.

이 문제를 해결하려면 Compute 또는 Bare Metal Provisioning 노드의 /httpboot/pxelinux.cfg/MAC_ADDRESS 에서 PXE 부팅 구성 파일을 확인하고 이 파일에 나열된 모든 IP 주소가 Bare Metal Provisioning 네트워크의 IP 주소에 해당하는지 확인합니다.

참고

베어 메탈 프로비저닝 노드에서 알고 있는 유일한 네트워크는 베어 메탈 프로비저닝 네트워크입니다. 엔드포인트 중 하나가 네트워크에 없는 경우 엔드포인트는 부팅 프로세스의 일부로 베어 메탈 프로비저닝 노드에 연결할 수 없습니다.

예를 들어 파일의 커널 행은 다음과 같습니다.

kernel http://192.168.200.2:8088/5a6cdbe3-2c90-4a90-b3c6-85b449b30512/deploy_kernel selinux=0 disk=cciss/c0d0,sda,hda,vda iscsi_target_iqn=iqn.2008-10.org.openstack:5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_id=5a6cdbe3-2c90-4a90-b3c6-85b449b30512 deployment_key=VWDYDVVEFCQJNOSTO9R67HKUXUGP77CK ironic_api_url=http://192.168.200.2:6385 troubleshoot=0 text nofb nomodeset vga=normal boot_option=netboot ip=${ip}:${next-server}:${gateway}:${netmask} BOOTIF=${mac}  ipa-api-url=http://192.168.200.2:6385 ipa-driver-name=pxe_ssh boot_mode=bios initrd=deploy_ramdisk coreos.configdrive=0 || goto deploy
위의 예제 커널 줄의 값해당 정보

http://192.168.200.2:8088

/etc/ironic/ironic.conf 파일의 매개변수 http_url. 이 IP 주소는 베어 메탈 프로비저닝 네트워크에 있어야 합니다.

5a6cdbe3-2c90-4a90-b3c6-85b449b30512

ironic node-list 의 baremetal 노드의 UUID입니다.

deploy_kernel

이미지 서비스에서 /httpboot/<NODE_UUID>/deploy_kernel 으로 복사되는 배포 커널 이미지입니다.

http://192.168.200.2:6385

/etc/ironic/ironic.conf 파일의 매개변수 api_url. 이 IP 주소는 베어 메탈 프로비저닝 네트워크에 있어야 합니다.

pxe_ssh

이 노드의 베어 메탈 프로비저닝 서비스에서 사용 중인 IPMI 드라이버입니다.

deploy_ramdisk

이는 이미지 서비스에 /httpboot/<NODE_UUID>/deploy_ramdisk로 복사되는 배포 램디스크 이미지입니다.

이러한 값 중 /httpboot/pxelinux.cfg/MAC_ADDRESSironic.conf 파일 간에 일치하지 않는 경우 ironic.conf 파일에서 해당 값을 업데이트하고 베어 메탈 프로비저닝 서비스를 다시 시작한 다음 베어 메탈 프로비저닝 노드를 다시 배포해야 합니다.

4.3. 베어 메탈 프로비저닝 서비스가 올바른 호스트 이름을 얻지 못하는 문제 해결

베어 메탈 프로비저닝 시스템에 올바른 호스트 이름이 없는 경우 cloud-init 가 실패합니다. 이 문제를 해결하려면 OpenStack Networking 서비스의 라우터에 Bare Metal Provisioning 서브넷을 연결합니다. 메타 데이터 에이전트에 대한 요청이 올바르게 라우팅되어야 합니다.

4.4. 베어 메탈 프로비저닝 명령을 실행할 때 잘못된 OpenStack ID 서비스 인증 정보 문제 해결

ID 서비스를 인증하는 데 문제가 있는 경우 ironic.conf 파일에서 identity_uri 매개변수를 확인하고 keystone AdminURL에서 /v2.0 을 제거해야 합니다. 예를 들어 identity_urihttp://IP:PORT 로 설정해야 합니다.

4.5. 하드웨어 등록 문제 해결

등록된 하드웨어의 문제는 잘못된 노드 등록 세부 정보로 인해 발생할 수 있습니다. 속성 이름과 값이 올바르게 입력되었는지 확인합니다. 잘못되었거나 잘못 입력된 속성 이름이 노드 세부 정보에 성공적으로 추가되지만 무시됩니다.

노드의 세부 정보를 업데이트합니다. 이 예에서는 노드가 사용하도록 등록된 메모리 양을 2GB로 업데이트합니다.

# ironic node-update NODE_UUID replace properties/memory_mb=2048

4.6. No Valid Host Errors 문제 해결

Compute 스케줄러에서 인스턴스를 부팅할 적절한 Bare Metal Provisioning 노드를 찾을 수 없는 경우 /var/log/nova/nova-conductor.logNoValidHost 오류가 표시되거나 대시보드의 시작 실패 시 즉시 표시됩니다. 일반적으로 Compute가 예상하는 리소스와 Bare Metal Provisioning 노드에서 제공하는 리소스가 일치하지 않기 때문에 발생합니다.

  1. 사용 가능한 하이퍼바이저 리소스를 확인합니다.

    # nova hypervisor-stats

    여기에 보고된 리소스는 베어 메탈 프로비저닝 노드에서 제공하는 리소스와 일치해야 합니다.

  2. Compute가 베어 메탈 프로비저닝 노드를 하이퍼바이저로 인식하는지 확인합니다.

    # nova hypervisor-list

    UUID로 식별된 노드가 목록에 표시되어야 합니다.

  3. 베어 메탈 프로비저닝 노드의 세부 정보를 확인합니다.

    # ironic node-list
    # ironic node-show NODE_UUID

    노드의 세부 정보가 Compute에서 보고한 것과 일치하는지 확인합니다.

  4. 선택한 플레이버가 베어 메탈 프로비저닝 노드의 사용 가능한 리소스를 초과하지 않는지 확인합니다.

    nova flavor-show FLAVOR_NAME
  5. ironic node-list 의 출력을 확인하여 베어 메탈 프로비저닝 노드가 유지보수 모드에 있지 않은지 확인합니다. 필요한 경우 유지 관리 모드를 제거합니다.

    # ironic node-set-maintenance NODE_UUID off
  6. ironic node-list 의 출력을 확인하여 Bare Metal Provisioning 노드가 available 상태인지 확인합니다. 필요한 경우 노드를 사용 가능한 상태로 이동합니다.

    # ironic node-set-provision-state NODE_UUID provide

4.7. 하드웨어 인트로스펙션 문제 해결

사용 가능한 프로비저닝 상태의 베어 메탈 프로비저닝 노드에서 하드웨어 인트로스펙션이 실패할 수 있습니다.

  1. 모든 노드의 프로비저닝 상태를 확인합니다.

    # ironic node-list
  2. 인트로스펙션을 시작하기 전에 노드를 사용 가능한 상태에서 manageable 로 이동합니다.

    # ironic node-set-provision-state NODE_UUID manage

부록 A. Bare Metal 프로비저닝 드라이버

베어 메탈 프로비저닝은 많은 드라이버 중 하나를 사용하도록 구성할 수 있습니다. 각 드라이버는 프로비저닝 방법과 전원 관리 유형으로 구성됩니다. 일부 드라이버에는 추가 구성이 필요합니다. 이 섹션에 설명된 각 드라이버는 프로비저닝에 PXE를 사용합니다. 드라이버는 전원 관리 유형으로 나열됩니다. 베어 메탈 프로비저닝에 대한 드라이버 또는 드라이버를 활성화하려면 1.4.4.4절. “베어 메탈 프로비저닝 드라이버 구성” 을 참조하십시오.

A.1. IPMI(Intelligent Platform Management Interface)

IPMI는 전원 관리 및 서버 모니터링을 포함하여 대역 외 원격 관리 기능을 제공하는 인터페이스입니다. 이 전원 관리 유형을 사용하려면 모든 베어 메탈 프로비저닝 노드에 공유 베어 메탈 프로비저닝 네트워크에 연결된 IPMI가 필요합니다. pxe_ipmitool 드라이버를 활성화하고 노드의 driver_info 에서 다음 정보를 설정합니다.

  • ipmi_address - IPMI NIC의 IP 주소입니다.
  • ipmi_username - IPMI 사용자 이름입니다.
  • ipmi_password - IPMI 암호입니다.

A.2. DRAC(Dell Remote Access Controller)

DRAC는 전원 관리 및 서버 모니터링을 포함하여 대역 외 원격 관리 기능을 제공하는 인터페이스입니다. 이 전원 관리 유형을 사용하려면 모든 베어 메탈 프로비저닝 노드에 공유 베어 메탈 프로비저닝 네트워크에 연결된 DRAC가 필요합니다. pxe_drac 드라이버를 활성화하고 노드의 driver_info 에서 다음 정보를 설정합니다.

  • drac_address - DRAC NIC의 IP 주소입니다.
  • drac_username - DRAC 사용자 이름입니다.
  • drac_password - DRAC 암호입니다.

A.3. iRMC(Integrated Remote Management Controller)

Fujitsu의 iRMC는 전원 관리 및 서버 모니터링을 포함하여 대역 외 원격 관리 기능을 제공하는 인터페이스입니다. 베어 메탈 프로비저닝 노드에서 이 전원 관리 유형을 사용하려면 노드에 공유 베어 메탈 프로비저닝 네트워크에 연결된 iRMC 인터페이스가 필요합니다. pxe_irmc 드라이버를 활성화하고 노드의 driver_info 에서 다음 정보를 설정합니다.

  • irmc_address - iRMC 인터페이스 NIC의 IP 주소입니다.
  • irmc_username - iRMC 사용자 이름입니다.
  • irmc_password - iRMC 암호입니다.

IPMI를 사용하여 센서 데이터를 가져오기 위해 부팅 모드 또는 SCCI를 설정하려면 다음 추가 단계를 완료해야 합니다.

  1. ironic.conf 에서 센서 방법을 활성화합니다.

    # openstack-config --set /etc/ironic/ironic.conf \
       irmc sensor_method METHOD

    METHODscci 또는 ipmitool 으로 바꿉니다.

  2. SCCI를 활성화한 경우 python-scciclient 패키지를 설치합니다.

    # yum install python-scciclient
  3. Bare Metal Provisioning conductor 서비스를 다시 시작합니다.

    # systemctl restart openstack-ironic-conductor.service
참고

iRMC 드라이버를 사용하려면 iRMC S4 이상이 필요합니다.

A.4. iLO(Integrated Lights-Out)

Hewlett-Packard의 iLO는 전원 관리 및 서버 모니터링을 포함하여 대역 외 원격 관리 기능을 제공하는 인터페이스입니다. 이 전원 관리 유형을 사용하려면 모든 베어 메탈 프로비저닝 노드에 공유 베어 메탈 프로비저닝 네트워크에 연결된 iLO 인터페이스가 필요합니다. pxe_ilo 드라이버를 활성화하고 노드의 driver_info 에서 다음 정보를 설정합니다.

  • ilo_address - iLO 인터페이스 NIC의 IP 주소입니다.
  • ilo_username - iLO 사용자 이름입니다.
  • ilo_password - iLO 암호입니다.

python-proliantutils 패키지를 설치하고 Bare Metal Provisioning conductor 서비스를 다시 시작해야 합니다.

# yum install python-proliantutils
# systemctl restart openstack-ironic-conductor.service
참고

인트로스펙션에 성공하려면 HP 노드에 2015 펌웨어 버전이 있어야 합니다.

A.5. SSH 및 Virsh

베어 메탈 프로비저닝은 libvirt를 실행 중인 호스트에 액세스하고 가상 머신을 노드로 사용할 수 있습니다. virsh는 노드의 전원 관리를 제어합니다.

중요

SSH 드라이버는 테스트 및 평가 목적으로만 사용됩니다. Red Hat OpenStack Platform 엔터프라이즈 환경에는 사용하지 않는 것이 좋습니다.

이 전원 관리 유형을 사용하려면 베어 메탈 프로비저닝에서 가상 노드가 설정될 호스트의 libvirt 환경에 대한 전체 액세스 권한이 있는 계정에 대한 SSH 액세스 권한이 있어야 합니다. pxe_ssh 드라이버를 활성화하고 노드의 driver_info 에서 다음 정보를 설정합니다.

  • ssh_virt_type - 이 옵션을 virsh 로 설정합니다.
  • ssh_address - virsh 호스트의 IP 주소입니다.
  • ssh_username - SSH 사용자 이름입니다.
  • ssh_key_contents - 베어 메탈 프로비저닝 컨덕터 노드에 있는 SSH 개인 키의 내용입니다. 일치하는 공개 키를 virsh 호스트에 복사해야 합니다.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.