스택 구성 파일
스택 구성 파일 (Stack configuration files)
HCP Terraform의 스택(Stacks)을 구성하는 두 가지 파일 유형을 설명해 드릴게요. 컴포넌트 구성과 배포 구성을 나누면 인프라를 한 번 정의하고 여러 번 배포할 수 있어요.
출처: 문서
본문
스택 (Stacks)은 두 가지 유형의 구성 파일을 사용해서 인프라 구성 요소를 정의하는 것과 배포 세부 사항을 분리해요. 컴포넌트 구성(component configuration)으로 인프라를 한 번 정의하고, 배포 구성(deployment configuration)으로 그 인프라를 서로 다른 구성을 가진 여러 번 배포해요.
파일 유형 (File types)
스택 구성은 두 가지 다른 파일 유형으로 이루어져요:
- 컴포넌트 파일(
.tfcomponent.hcl로 끝남): 이 스택이 생성하는 인프라 컴포넌트와 그 컴포넌트의 입력 값을 선언해요. - 배포 파일(
.tfdeploy.hcl로 끝남): 스택을 몇 번 배포할지와 각 배포의 입력 값을 선언해요.
컴포넌트 구성 파일 (Component configuration files)
.tfcomponent.hcl로 끝나는 컴포넌트 파일은 스택을 구성하는 인프라 컴포넌트를 정의해요. 컴포넌트 구성 파일은 어디에, 몇 번 배포할지를 지정하지 않고 어떤 인프라를 만들고 싶은지에 집중해요.
컴포넌트 구성은 Terraform의 전통적인 루트 모듈 구조를 대체하며, 어떤 모듈을 포함할지, 프로바이더를 어떻게 구성할지, 스택이 어떤 변수를 받는지를 선언해요. 각 스택은 최소 하나의 component 블록을 요구하며, 스택에 포함하려는 모든 모듈마다 component 블록을 추가해야 해요. 컴포넌트 구성 작성법을 더 알아보세요.
컴포넌트 구성 파일에서 다음 블록을 정의할 수 있어요:
component블록: 스택을 구성하는 개별 모듈을 소싱해요. 각 컴포넌트는 입력 변수를 받고 스택 레벨에서 선언한 프로바이더를 수용해요.required_providers블록: 컴포넌트 구성이 필요로 하는 프로바이더를 선언해서 Terraform이 설치·사용할 수 있게 해요.provider블록: 프로바이더를 구성하고 그 구성을 컴포넌트에 전달해요.removed블록: 스택에서 제거하고 싶은 컴포넌트를 정의하면서 리소스의 적절한 정리를 보장해요.variable블록: 배포가 다른 값으로 설정할 수 있는 입력 변수를 정의해요.output블록: HCP Terraform UI에 노출하고 배포에 사용할 수 있게 할 값을 정의해요.locals블록: 컴포넌트 구성 안에서 참조할 수 있는 로컬 값을 정의해요.
컴포넌트 구성을 여러 파일로 나누면 탐색이 쉬워져요. 예를 들어 다음 파일 구조는 스택의 컴포넌트를 컴포넌트 구성을 돕는 다른 블록들과 분리해요:
components.tfcomponent.hcl: 스택의 컴포넌트 정의providers.tfcomponent.hcl: 이 스택의 프로바이더 구성variables.tfcomponent.hcl: 이 스택의 입력 변수 선언outputs.tfcomponent.hcl: 이 스택의 출력 값 정의
배포 구성 파일 (Deployment configuration files)
배포 구성 파일(.tfdeploy.hcl)은 HCP Terraform이 스택의 인프라를 어떻게 배포하는지 정의해요. 배포 구성 파일은 컴포넌트 구성에서 정의한 컴포넌트를 사용해 인프라를 어디에, 어떻게 배포할지에 집중해요.
스택은 최소 하나의 deployment 블록을 가져야 해요. 배포 구성 파일은 배포를 몇 개 만들지, 각 배포에 어떤 값을 전달할지, 배포 실행 과정을 어떻게 조율할지 지정해요.
배포 구성 파일에서 다음 블록을 정의할 수 있어요:
deployment블록: 스택의 인프라를 몇 번, 어떤 입력 값으로 배포할지 정의해요.deployment_group블록: 배포들을 그룹화해 공유 설정과 자동 승인 규칙을 구성해요.deployment_auto_approve블록: 특정 조건에 따라 배포 계획을 자동 승인하는 규칙을 정의해요.identity_token블록: Terraform이 클라우드 프로바이더와의 OIDC 인증을 위해 생성하는 JSON Web Token(JWT)을 정의해요.store블록: 배포 구성에서 외부 시크릿 저장소와 변수 세트에 접근하게 해요.publish_output블록: 같은 프로젝트의 다른 스택이 소비할 수 있는 값을 스택에서 내보내요.upstream_input블록: 같은 프로젝트의 다른 스택에서 출력을 소비해 현재 스택의 입력으로 사용해요.locals블록: 배포 구성 안에서 참조할 수 있는 로컬 값을 정의해요.
파일 구성 (File organization)
HCP Terraform은 스택의 루트 디렉터리에 있는 모든 구성 파일을 이름과 관계없이 처리해요. 전통적인 Terraform 구성처럼 선호에 따라 구성 파일을 여러 파일로 구성할 수 있어요. 컴포넌트 구성과 배포 구성은 모두 스택 저장소의 루트 레벨에 있어야 해요. HCP Terraform은 모든 .tfcomponent.hcl 및 .tfdeploy.hcl 파일을 의존성 순서로 자동 발견하고 처리해요.