8장. 오버클라우드를 배포하기 전에 베어 메탈 노드 프로비저닝

중요

이 기능은 이번 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 기술 프리뷰 기능에 대한 자세한 내용은 적용 범위 상세 정보를 참조하십시오.

오버클라우드 배포 프로세스에는 다음과 같은 두 개의 기본 작업이 포함되어 있습니다.

  • 노드 프로비저닝
  • 오버클라우드 배포

이 작업을 개별 프로세스로 나누면 이 프로세스와 관련된 위험을 완화하고 실패 지점을 더 효율적으로 파악할 수 있습니다.

  1. 베어 메탈 노드를 프로비저닝합니다.

    1. yaml 형식으로 노드 정의 파일을 작성합니다.
    2. 노드 정의 파일을 포함하여 프로비저닝 명령을 실행합니다.
  2. 오버클라우드를 배포합니다.

    1. 프로비저닝 명령에서 생성하는 Heat 환경 파일을 포함하여 배포 명령을 실행합니다.

프로비저닝 프로세스는 노드를 프로비저닝하고, 노드 개수, 예측 노드 배치, 사용자 지정 이미지, 사용자 지정 NIC를 비롯하여 다양한 노드 사양을 포함하는 Heat 환경 파일을 생성합니다. 오버클라우드를 배포할 때 배포 명령에 이 파일을 추가하십시오.

중요

사전 프로비저닝된 노드와 director 프로비저닝된 노드를 결합할 수 없습니다.

8.1. 오버클라우드에 노드 등록

director에는 노드의 하드웨어 및 전원 관리 세부 정보를 지정하는 노드 정의 템플릿이 필요합니다. JSON 형식, nodes.json 또는 YAML 형식, nodes.yaml 로 이 템플릿을 생성할 수 있습니다.

절차

  1. 노드를 나열하는 nodes.json 또는 nodes.yaml 이라는 템플릿을 생성합니다. 다음 JSON 및 YAML 템플릿 예제를 사용하여 노드 정의 템플릿을 구성하는 방법을 파악합니다.

    JSON 템플릿 예

    {
      "nodes": [{
        "name": "node01",
        "ports": [{
          "address": "aa:aa:aa:aa:aa:aa",
          "physical_network": "ctlplane",
          "local_link_connection": {
            "switch_id": "52:54:00:00:00:00",
            "port_id": "p0"
          }
        }],
        "cpu": "4",
        "memory": "6144",
        "disk": "40",
        "arch": "x86_64",
        "pm_type": "ipmi",
        "pm_user": "admin",
        "pm_password": "p@55w0rd!",
        "pm_addr": "192.168.24.205"
      },
      {
        "name": "node02",
        "ports": [{
          "address": "bb:bb:bb:bb:bb:bb",
          "physical_network": "ctlplane",
          "local_link_connection": {
            "switch_id": "52:54:00:00:00:00",
            "port_id": "p0"
          }
        }],
        "cpu": "4",
        "memory": "6144",
        "disk": "40",
        "arch": "x86_64",
        "pm_type": "ipmi",
        "pm_user": "admin",
        "pm_password": "p@55w0rd!",
        "pm_addr": "192.168.24.206"
      }]
    }

    YAML 템플릿 예

    nodes:
      - name: "node01"
        ports:
          - address: "aa:aa:aa:aa:aa:aa"
            physical_network: ctlplane
            local_link_connection:
              switch_id: 52:54:00:00:00:00
              port_id: p0
        cpu: 4
        memory: 6144
        disk: 40
        arch: "x86_64"
        pm_type: "ipmi"
        pm_user: "admin"
        pm_password: "p@55w0rd!"
        pm_addr: "192.168.24.205"
      - name: "node02"
        ports:
          - address: "bb:bb:bb:bb:bb:bb"
            physical_network: ctlplane
            local_link_connection:
              switch_id: 52:54:00:00:00:00
              port_id: p0
        cpu: 4
        memory: 6144
        disk: 40
        arch: "x86_64"
        pm_type: "ipmi"
        pm_user: "admin"
        pm_password: "p@55w0rd!"
        pm_addr: "192.168.24.206"

    이 템플릿에는 다음 속성이 포함되어 있습니다.

    name
    노드의 논리 이름입니다.
    포트

    특정 IPMI 장치에 액세스할 수 있는 포트입니다. 다음과 같은 선택적 포트 특성을 정의할 수 있습니다.

    • 주소: 노드에 있는 네트워크 인터페이스의 MAC 주소입니다. 각 시스템의 프로비저닝 NIC에는 MAC 주소만 사용합니다.
    • physical_network: 프로비저닝 NIC에 연결된 물리적 네트워크입니다.
    • local_link_connection: IPv6 프로비저닝을 사용하고 LLDP가 인트로스펙션 중에 로컬 링크 연결을 올바르게 채우지 않는 경우 local_link_connection 매개변수의 switch_idport_id 필드에 페이크 데이터를 포함해야 합니다. 페이크 데이터를 포함하는 방법에 대한 자세한 내용은 director 인트로스펙션 사용을 통해 베어 메탈 노드 하드웨어 정보 수집을 참조하십시오.
    cpu
    (선택 사항) 노드에 있는 CPU 수입니다.
    memory
    (선택 사항) 메모리 크기(MB)입니다.
    disk
    (선택 사항) 하드 디스크의 크기(GB)입니다.
    arch

    (선택 사항) 시스템 아키텍처입니다.

    중요

    다중 아키텍처 클라우드를 빌드하는 경우 x86_64ppc64le 아키텍처를 사용하여 노드를 구분하려면 arch 키가 필요합니다.

    pm_type

    사용하려는 전원 관리 드라이버. 이 예에서는 IPMI 드라이버(ipmi)를 사용합니다.

    참고

    IPMI는 지원되는 기본 전원 관리 드라이버입니다. 지원되는 전원 관리 유형 및 옵션에 대한 자세한 내용은 전원 관리 드라이버를 참조하십시오. 이러한 전원 관리 드라이버가 예상대로 작동하지 않는 경우 IPMI를 전원 관리에 사용합니다.

    pm_user; pm_password
    IPMI 사용자 이름 및 암호입니다.
    pm_addr
    IPMI 장치의 IP 주소입니다.
  2. 템플릿을 생성한 후 다음 명령을 실행하여 포멧과 구문을 확인합니다.

    $ source ~/stackrc
    (undercloud)$ openstack overcloud node import --validate-only ~/nodes.json
    중요

    다중 아키텍처 노드에 --http-boot /var/lib/ironic/tftpboot/ 옵션도 포함해야 합니다.

  3. 파일을 stack 사용자의 홈 디렉터리(/home/stack/nodes.json)에 저장합니다.
  4. 템플릿을 director로 가져와 템플릿의 각 노드를 director로 등록합니다.

    (undercloud)$ openstack overcloud node import ~/nodes.json
    참고

    UEFI 부팅 모드를 사용하는 경우 각 노드에서 부팅 모드도 설정해야 합니다. UEFI 부팅 모드를 설정하지 않고 노드를 세부 검사하면 노드가 기존 모드로 부팅됩니다. 자세한 내용은 부팅 모드 설정을 UEFI 부팅 모드로 설정을 참조하십시오.

  5. 노드 등록 및 구성이 완료될 때까지 기다립니다. 완료되면 노드가 director에 성공적으로 등록되어 있는지 확인합니다.

    (undercloud)$ openstack baremetal node list