잡 스펙의 `meta` 블록

잡 스펙의 meta 블록

meta 블록은 사용자 정의 임의의 키-값 쌍을 허용해요. meta 블록은 job, group, 또는 task 레벨에서 사용할 수 있어요.

출처: 문서

본문

배치 job -> **meta**
job -> group -> **meta**
job -> group -> task -> **meta**
job "docs" {
  meta {
    my-key = "my-value"
  }

  group "example" {
    meta {
      my-key = "my-value"
    }

    task "server" {
      meta {
        my-key = "my-value"
      }
    }
  }
}

메타데이터는 잡 스펙 위로 병합되므로, 잡 레벨에서 정의된 메타데이터는 그 잡의 모든 그룹과 태스크에 적용돼요. 그룹 레이어에서 정의된 메타데이터는 그 그룹의 모든 태스크에 적용돼요.

meta 값은 태스크 안에서 런타임 환경 변수로 사용할 수 있게 돼요.

매개변수 (Parameters)

meta 블록의 "매개변수"는 어떤 키-값이든 될 수 있어요. 키와 값 모두 string 타입이지만, 다른 타입으로 지정할 수도 있어요. 자동으로 문자열로 변환돼요. 키의 [A-Za-z0-9_.] 이외의 문자는 _로 변환돼요.

예시 (Examples)

다음 예시는 meta 블록만 보여줘요. meta 블록은 위에 나열된 배치에서만 유효하다는 점을 기억하세요.

강제 변환 (Coercion)

이 예시는 키-값 쌍을 지정하는 다양한 방법을 보여줘요. 내부적으로 이 값들은 문자열 표현으로 저장돼요. 타입 정보는 보존되지 않아요.

meta {
  key = "true"
  key = true

  key = 1.4
  key = "1.4"
}

보간 (Interpolation)

이 예시는 Nomad 보간을 사용해 환경 변수를 채우는 방법을 보여줘요.

meta {
  class = "${node.class}"
}

점이 있는 meta 키 (Meta keys with dots)

.을 포함하는 것처럼 유효한 HCLv2 식별자가 아닌 meta 키는 대체 맵 할당 구문이 필요해요.

meta = {
  "project.team" = "sre"
}

템플릿 사용 예시 (Template usage example)

템플릿에서 meta 값을 사용하려면 환경 변수 형태를 참조하면 돼요.

template {
  destination = "local/out.txt"
  data = <<EOH
  {{ env "NOMAD_META_mykey" }}
EOH
}

더 알아보기 (Learn more)