잡 스펙의 `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
}