15장. 베어 메탈 노드 자동 검색

instackenv.json 파일을 먼저 생성하지 않고 auto-discovery를 사용하여 언더클라우드 노드를 등록하고 해당 메타데이터를 생성할 수 있습니다. 이러한 개선 사항은 초기 노드 정보를 수집하는 데 소요되는 시간을 줄이는 데 도움이 될 수 있습니다. 예를 들어 IPMI IP 주소를 분석하고 차후에 instackenv.json을 생성할 필요가 없습니다.

15.1. 요구 사항

  • 모든 오버클라우드 노드는 IPMI를 통해 director에 액세스할 수 있도록 BMC를 설정해야 합니다.
  • 모든 클라우드 노드는 언더클라우드 컨트롤 플레인 네트워크에 연결된 NIC에서 PXE 부팅되도록 구성해야 합니다.

15.2. 자동 검색 활성화

  1. 베어 메탈 자동 검색을 undercloud.conf에서 활성화합니다.

    enable_node_discovery = True
    discovery_default_driver = ipmi
    • enable_node_discovery - 활성화되면 PXE를 사용하여 인트로스펙션 램디스크를 부팅하는 모든 노드가 ironic에 등록됩니다.
    • discovery_default_driver - 드라이버를 검색된 노드에서 사용하도록 설정합니다(예: pxe_ipmitool).
  2. IPMI 인증서를 ironic에 추가합니다:

    1. IPMI 인증서를 ipmi-credentials.json이라는 이름의 파일에 추가합니다. 이 예시에서 사용자 이름과 암호 값을 사용자 환경에 맞게 변경해야 합니다.

      [
          {
              "description": "Set default IPMI credentials",
              "conditions": [
                  {"op": "eq", "field": "data://auto_discovered", "value": true}
              ],
              "actions": [
                  {"action": "set-attribute", "path": "driver_info/ipmi_username",
                   "value": "SampleUsername"},
                  {"action": "set-attribute", "path": "driver_info/ipmi_password",
                   "value": "RedactedSecurePassword"},
                  {"action": "set-attribute", "path": "driver_info/ipmi_address",
                   "value": "{data[inventory][bmc_address]}"}
              ]
          }
      ]
  3. IPMI 인증서 파일을 ironic에 가져옵니다.

    $ openstack baremetal introspection rule import ipmi-credentials.json

15.3. 자동 검색 테스트

  1. 필요한 노드의 전원을 켭니다.
  2. openstack baremetal node list를 실행하면 enrolled 상태에 새 노드가 표시되어야 합니다.

    $ openstack baremetal node list
    +--------------------------------------+------+---------------+-------------+--------------------+-------------+
    | UUID                                 | Name | Instance UUID | Power State | Provisioning State | Maintenance |
    +--------------------------------------+------+---------------+-------------+--------------------+-------------+
    | c6e63aec-e5ba-4d63-8d37-bd57628258e8 | None | None          | power off   | enroll             | False       |
    | 0362b7b2-5b9c-4113-92e1-0b34a2535d9b | None | None          | power off   | enroll             | False       |
    +--------------------------------------+------+---------------+-------------+--------------------+-------------+
  3. 각 노드에 리소스 클래스를 설정합니다.

    $ for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node set $NODE --resource-class baremetal ; done
  4. 각 노드에 커널 및 램디스크를 설정합니다.

    $ for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node manage $NODE ; done
    $ openstack overcloud node configure --all-manageable
  5. 모든 노드를 사용 가능한 상태로 설정합니다.

    $ for NODE in `openstack baremetal node list -c UUID -f value` ; do openstack baremetal node provide $NODE ; done

15.4. 규칙을 사용하여 다른 벤더 하드웨어 검색 방법

여러 가지가 혼합된 하드웨어 환경의 경우 인트로스펙션 규정을 사용하여 인증서 및 원격 관리 인증서를 할당할 수 있습니다. 예를 들어 별도의 검색 규칙으로 DRAC를 사용하는 Dell 노드를 처리할 수 있습니다.

  1. 다음 콘텐츠로 dell-drac-rules.json이라는 파일을 생성합니다. 이 예시에서 사용자 이름과 암호 값을 사용자 환경에 맞게 변경해야 합니다.

    [
        {
            "description": "Set default IPMI credentials",
            "conditions": [
                {"op": "eq", "field": "data://auto_discovered", "value": true},
                {"op": "ne", "field": "data://inventory.system_vendor.manufacturer",
                 "value": "Dell Inc."}
            ],
            "actions": [
                {"action": "set-attribute", "path": "driver_info/ipmi_username",
                 "value": "SampleUsername"},
                {"action": "set-attribute", "path": "driver_info/ipmi_password",
                 "value": "RedactedSecurePassword"},
                {"action": "set-attribute", "path": "driver_info/ipmi_address",
                 "value": "{data[inventory][bmc_address]}"}
            ]
        },
        {
            "description": "Set the vendor driver for Dell hardware",
            "conditions": [
                {"op": "eq", "field": "data://auto_discovered", "value": true},
                {"op": "eq", "field": "data://inventory.system_vendor.manufacturer",
                 "value": "Dell Inc."}
            ],
            "actions": [
                {"action": "set-attribute", "path": "driver", "value": "idrac"},
                {"action": "set-attribute", "path": "driver_info/drac_username",
                 "value": "SampleUsername"},
                {"action": "set-attribute", "path": "driver_info/drac_password",
                 "value": "RedactedSecurePassword"},
                {"action": "set-attribute", "path": "driver_info/drac_address",
                 "value": "{data[inventory][bmc_address]}"}
            ]
        }
    ]
  2. 규칙을 ironic에 가져옵니다.

    $ openstack baremetal introspection rule import dell-drac-rules.json