부록 E. 프로파일 자동 태그

인트로스펙션 프로세스는 일련의 벤치마크 테스트를 수행합니다. director는 이러한 테스트의 데이터를 저장합니다. 여러 방법으로 이 데이터를 사용하는 정책 세트를 만들 수 있습니다. 예를 들면 다음과 같습니다.

  • 정책을 통해 성능이 떨어지거나 안정적이지 않은 노드를 오버클라우드에서 사용하지 않도록 식별하고 격리할 수 있습니다.
  • 정책을 통해 노드를 특정 프로필에 자동으로 태그할 것인지 여부를 정의할 수 있습니다.

E.1. 정책 파일 구문

정책 파일은 규칙 세트가 포함된 JSON 포맷을 사용합니다. 각 규칙은 description, conditionaction을 정의합니다.

설명

이는 일반 텍스트로된 규칙 설명입니다.

예:

"description": "A new rule for my node tagging policy"

Conditions

condition은 다음 키-값 패턴을 사용하여 평가를 정의합니다.

field
평가할 필드를 정의합니다. 필드 유형에 대해서는 E.4절. “프로파일 자동 태그 속성”을 참조하십시오.
op

평가에 사용할 작업을 정의합니다. 여기에 포함되는 작업은 다음과 같습니다.

  • eq - 같음
  • ne - 같지 않음
  • lt - 보다 작음
  • gt - 보다 큼
  • le - 작거나 같음
  • ge - 크거나 같음
  • in-net - IP 주소가 지정된 네트워크에 있는지 확인
  • matches - 지정된 정규 표현과 완전히 일치해야 함
  • contains - 지정된 정규 표현식을 포함하는 값이 필요함
  • is-empty - 빌드가 비어 있는지 확인
invert
평가 결과를 반전할지 여부를 정의하는 부울 값입니다.
multiple

여러 결과가 있는 경우 사용할 평가를 정의합니다. 예를 들면 다음과 같습니다.

  • any - 임의 결과가 일치해야 함
  • all - 모든 결과가 일치해야 함
  • first - 첫 번째 결과가 일치해야 함
value
평가에 값을 정의합니다. 필드 및 작업 결과가 값에 있으면 조건이 true 결과를 반환합니다. 그렇지 않으면 조건이 false를 반환합니다.

예:

"conditions": [
  {
    "field": "local_gb",
    "op": "ge",
    "value": 1024
  }
],

동작

조건이 true로 반환되는 경우 작업이 수행됩니다. action 값에 따라 action 키와 추가 키를 사용합니다.

  • fail - 인트로스펙션이 실패합니다. 실패 메시지에 대한 message 매개 변수가 필요합니다.
  • set-attribute - Ironic 노드에 대한 속성을 설정합니다. Ironic 속성에 대한 경로인 path 필드와(예: /driver_info/ipmi_address) 설정할 value가 필요합니다.
  • set-capability - Ironic 노드에 대한 기능을 설정합니다. 각각 새 기능에 대한 이름 및 값인 namevalue 필드가 필요합니다. 이 동일한 기능에 대한 기존 값은 교체됩니다. 예를 들면 노드 프로필을 정의하는 데 이 값을 사용합니다.
  • extend-attribute - set-attribute와 동일하지만, 기존 값을 목록으로 처리하고 값을 여기에 추가합니다. 옵션 unique 매개 변수가 True로 설정된 경우 지정된 값이 이미 목록에 있으면 아무것도 추가되지 않습니다.

예:

"actions": [
  {
    "action": "set-capability",
    "name": "profile",
    "value": "swift-storage"
  }
]

E.2. 정책 파일 예

다음은 인트로스펙션 규칙이 적용되는 JSON 파일(rules.json) 예입니다.

[
  {
    "description": "Fail introspection for unexpected nodes",
    "conditions": [
      {
        "op": "lt",
        "field": "memory_mb",
        "value": 4096
      }
    ],
    "actions": [
      {
        "action": "fail",
        "message": "Memory too low, expected at least 4 GiB"
      }
    ]
  },
  {
    "description": "Assign profile for object storage",
    "conditions": [
      {
        "op": "ge",
        "field": "local_gb",
        "value": 1024
      }
    ],
    "actions": [
      {
        "action": "set-capability",
        "name": "profile",
        "value": "swift-storage"
      }
    ]
  },
  {
    "description": "Assign possible profiles for compute and controller",
    "conditions": [
      {
        "op": "lt",
        "field": "local_gb",
        "value": 1024
      },
      {
        "op": "ge",
        "field": "local_gb",
        "value": 40
      }
    ],
    "actions": [
      {
        "action": "set-capability",
        "name": "compute_profile",
        "value": "1"
      },
      {
        "action": "set-capability",
        "name": "control_profile",
        "value": "1"
      },
      {
        "action": "set-capability",
        "name": "profile",
        "value": null
      }
    ]
  }
]

이 예는 다음 세 가지 규칙으로 구성되어 있습니다.

  • 메모리가 4096MiB 이하인 경우 인트로스펙션이 실패합니다. 그러한 규칙을 적용하여 클라우드의 일부가 되지 않아야 하는 노드를 제외할 수 있습니다.
  • 하드 드라이브 크기가 1TiB 이상인 노드가 무조건 할당된 swift-storage 프로필입니다.
  • 하드 드라이브 크기가 40GiB보다 크면서 1TiB 미만인 노드가 Compute 또는 Controller 노드가 될 수 있습니다. openstack overcloud profiles match 명령으로 나중에 최종 선택을 할 수 있도록 두 가지 기능(compute_profilecontrol_profile)을 할당합니다. 그렇게 하려면 기존 프로필 기능을 제거하고, 그렇게 하지 않는 경우 기존 프로필 기능이 우선 순위를 가집니다.

다른 노드는 변경되지 않습니다.

참고

인트로스펙션 규칙을 사용하여 profile 기능을 할당하면 기존 값을 항상 덮어씁니다. 하지만 기존 프로필 기능을 사용하는 노드의 경우 [PROFILE]_profile 기능이 무시됩니다.

E.3. 정책 파일 가져오기

다음 명령을 사용하여 정책 파일을 director로 가져옵니다.

$ openstack baremetal introspection rule import rules.json

그런 다음 introspection 프로세스를 실행합니다.

$ openstack overcloud node introspect --all-manageable

인트로스펙션이 완료되면 노드 및 할당된 해당 프로필을 확인합니다.

$ openstack overcloud profiles list

인트로스펙션 규칙에 오류가 있는 경우 모두 삭제할 수 있습니다.

$ openstack baremetal introspection rule purge

E.4. 프로파일 자동 태그 속성

자동 프로필 태깅은 각 조건의 field 속성에 대해 다음 노드 속성을 평가합니다.

속성설명

memory_mb

노드의 메모리 크기(MB)입니다.

cpus

노드의 CPU에 대한 총 코어 수입니다.

cpu_arch

노드 CPU의 아키텍처입니다.

local_gb

노드의 root 디스크 총 스토리지 공간입니다. 노드의 root 디스크 설정에 대한 자세한 내용은 6.5절. “노드의 root 디스크 정의”를 참조하십시오.


Red Hat의 최신 제품 문서 번역을 신속하게 제공하기 위해 이 페이지에는 영어 원본을 한국어로 자동 번역한 내용이 포함되어 있을 수 있습니다. [자세한 내용보기]