HCL locals 참조

HCL locals 참조

로컬 값(local values)은 표현식에 이름을 할당해서, 폴더 안에서 여러 번 재사용할 수 있게 해주는 기능이에요.

출처: 문서

본문

변수(variables)가 함수 인자와 비슷하다면, 로컬 값은 함수의 로컬 변수에 비유할 수 있어요.

예제

로컬 값은 locals 블록에서 정의해요.

# 계산된 기본 이름 접두어
locals {
  default_name_prefix = "${var.project_name}-web"
  name_prefix         = "${var.name_prefix != "" ? var.name_prefix : local.default_name_prefix}"

  # 변수와 달리 locals는 타입 제약이 없으므로, 맵은 받지만 객체는 받지 않는
  # 함수를 사용한다면 변환이 필요할 수 있어요
  number_of_ports = length(convert({"www" = "80"}, map(string)))
}

# 로컬 값은 "local." 접두어를 사용해 다른 곳에서 보간할 수 있어요.
job "example_loadbalancer" {
  name = "${local.name_prefix}_loadbalancer"
  # ...
}

설명

locals 블록은 하나 이상의 로컬 변수를 정의해요.

locals 블록의 항목에 주어진 이름은 고유해야 해요. 주어진 값은 현재 파일에서 유효한 어떤 표현식이든 될 수 있어요.

로컬 값의 표현식은 다른 locals를 참조할 수 있지만, 참조 순환(reference cycles)은 허용되지 않아요. 즉, 로컬이 자기 자신을 참조하거나 (직접적으로든 간접적으로든) 다시 그 로컬을 참조하는 변수를 참조할 수 없어요.

논리적으로 관련된 로컬 값들은 특히 서로 의존한다면 하나의 블록으로 묶는 것이 좋아요. 그렇게 하면 독자가 변수들 간의 관계를 이해하기 쉬워져요. 반대로 관련 없는 로컬 값은 별도의 블록에 정의해서, 각 블록에 그 안의 로컬들이 공유하는 문맥을 설명하는 주석을 다는 것을 고려해 보세요.

더 알아보기 (Learn more)

  • HCL input variables 참조를 확인해 보세요.