`stack` 블록 참조

stack 블록 참조 (stack block reference)

stack 블록을 사용해 HCP Terraform 개인 레지스트리에서 컴포넌트 구성을 소스로 사용해요. 각 stack 블록은 게시, 버전 관리, 재사용할 수 있는 재사용 가능한 컴포넌트 구성을 나타내요. 이 페이지에서는 stack 블록의 구성 모델과 지원 인자를 다룰게요.

출처: 문서

본문

stack 블록을 사용해 HCP Terraform 개인 레지스트리에서 컴포넌트 구성을 소스로 사용해요. 각 stack 블록은 게시, 버전 관리, 재사용할 수 있는 재사용 가능한 컴포넌트 구성을 나타내요.

배경 (Background)

Stacks는 각각 Terraform 모듈에서 소스를 가져오는 개별 component 블록으로 구성돼요. 컴포넌트는 Stack의 컴포넌트 구성 파일인 .tfcomponent.hcl 파일에 정의해요.

HCP Terraform 개인 레지스트리에서 전체 컴포넌트 구성 파일을 게시하고 관리할 수 있어 조직 전반에 걸쳐 Stacks 공유를 단순화할 수 있어요. 개별 Terraform 모듈을 소스로 사용하는 component 블록과 달리 stack 블록은 전체 컴포넌트 구성을 소스로 사용해요. Stacks 게시에 대해 더 알아보려면 Stack 컴포넌트 구성 게시를 참고해요.

.tfcomponent.hcl 파일에 stack 블록을 정의하면 stack 블록은 Stack의 모든 컴포넌트와 프로바이더를 포함한 전체 컴포넌트 구성을 소스로 사용해요. 더 알아보려면 HCP Terraform 개인 레지스트리의 아티팩트 사용을 참고해요.

구성 모델 (Configuration model)

stack 블록은 다음 인자를 지원해요:

  • stack "<NAME>" 블록
    • source 문자열
    • version 문자열
    • inputs

완전한 구성 (Complete configuration)

사용 가능한 모든 인자는 다음 stack 블록에 정의돼 있어요:

stack "<NAME>" {
  source  = "<ORG>/<NAME>"
  version = "<VERSION>"

  inputs = {
    <KEY> = <VALUE>
  }
}

사양 (Specification)

stack 블록은 다음 구성을 지원해요.

stack "<NAME>"

stack 키워드 뒤의 레이블은 정의하는 새 Stack의 이름이며, 유효한 식별자라면 무엇이든 될 수 있어요.

stack 블록에서 다음 인자가 지원돼요:

인자 설명 타입 필수?
source HCP Terraform 개인 레지스트리에서 소스로 사용할 컴포넌트 구성이에요. 문자열 필수
version 사용할 컴포넌트 구성 버전이에요. 문자열 필수
inputs 컴포넌트 구성에 대한 입력 변수 이름을 값에 매핑한 것이에요. 필수

source

source 인자는 HCP Terraform 개인 레지스트리에서 소스로 사용할 컴포넌트 구성을 지정해요.

stack "<NAME>" {
  source = "<ORG>/<NAME>"
  # ...
}

소스 주소의 <ORG> 값은 조직의 이름이고, <NAME>은 컴포넌트 구성의 이름이에요.

요약 (Summary)

  • 데이터 타입: 문자열
  • 기본값: 없음
  • 필수: 예

version

version 인자를 사용해 HCP Terraform 개인 레지스트리에서 사용할 컴포넌트 구성의 버전을 지정해요.

stack "<NAME>" {
  source  = "<ORG>/<NAME>"
  version = "<VERSION>"
  # ...
}

version 인자는 버전 제약 문자열을 받아요. Terraform은 제약을 충족하는 설치된 컴포넌트 구성 버전 중 가장 새로운 것을 사용해요. 허용 가능한 버전이 설치되어 있지 않으면 Terraform은 제약을 충족하는 가장 새로운 버전을 다운로드해요. 예기치 않거나 원치 않는 변경을 피하려면 허용 가능한 버전 번호를 명시적으로 제약할 것을 권장해요.

version 인자를 수정할 때마다 terraform stacks init을 실행해 새 버전으로 로컬 캐시를 업데이트해요.

요약 (Summary)

  • 데이터 타입: 문자열
  • 기본값: 없음
  • 필수: 예

inputs

inputs 인자는 컴포넌트 구성에 대한 입력 변수 이름을 값에 매핑하는 것을 정의해요. 이 맵의 키는 컴포넌트 구성의 변수에 정의된 변수 이름에 대응해야 해요.

stack "<NAME>" {
  source  = "<ORG>/<NAME>"
  version = "<VERSION>"

  inputs = {
    <KEY> = <VALUE>
  }
}

inputs 맵에서 세 가지 유형의 값을 사용할 수 있어요:

  • var.variable_name 같은 변수 참조
  • component.component_name.output_name 같은 컴포넌트 출력
  • 프리미티브와 함수 같은 리터럴 값

요약 (Summary)

  • 데이터 타입: 오브젝트
  • 기본값: 없음
  • 필수: 예

예시 (Examples)

다음 예시는 HCP Terraform 개인 레지스트리에 게시된 컴포넌트 구성을 사용해 Stack을 만드는 stack 블록 사용법을 보여줘요.

개인 레지스트리에서 컴포넌트 구성 소스로 사용 (Source a component configuration from the private registry)

다음 예시에서 Terraform은 조직의 개인 레지스트리에서 database 컴포넌트 구성을 소스로 사용하고 버전 1.x로 제약해요:

stack "database" {
  source  = "my-org/database-stack"
  version = "~> 1.0"

  inputs = {
    environment    = "production"
    instance_count = 3
    region         = "us-west-2"
  }
}

stack 블록은 그 모든 컴포넌트와 프로바이더를 포함한 전체 database-stack 컴포넌트 구성을 소스로 사용해요. 더 알아보려면 Stack 컴포넌트 구성 사용을 참고해요.

더 알아보기 (Learn more)