`publish_output` 블록 참조
publish_output 블록 참조 (publish_output block reference)
publish_output 블록을 사용해 Stack의 값을 같은 프로젝트의 다른 Stack으로 내보내요. 이 페이지에서는 publish_output 블록의 구성 모델과 지원 인자를 다룰게요.
출처: 문서
본문
publish_output 블록을 사용해 Stack의 값을 같은 프로젝트의 다른 Stack으로 내보내요.
배경 (Background)
참고: publish_output 블록은 Terraform 버전 1.10.0-alpha20241009 이상이 필요해요.
publish_output 블록은 현재 Stack에서 내보낼 값을 지정하며, 같은 프로젝트의 다른 Stack이 upstream_input 블록을 사용해 그 값을 소비할 수 있어요. Stack 배포에서 내보내려는 각 값에 대해 publish_output 블록을 선언해요. 실행 후 Stack의 출력 값이 변경되면 HCP Terraform은 그 출력에 의존하는 모든 Stack에 대한 실행을 자동으로 트리거해요.
더 알아보고 예시를 보려면 Stack 간 데이터 전달을 참고해요.
구성 모델 (Configuration model)
publish_output 블록은 다음 인자를 지원해요:
publish_output "<NAME>"블록value식description문자열
완전한 구성 (Complete configuration)
사용 가능한 모든 인자는 다음 publish_output 블록에 정의돼 있어요:
publish_output "<NAME>" {
description = "<DESCRIPTION>"
value = <VALUE>
}
사양 (Specification)
publish_output 블록은 다음 구성을 지원해요.
publish_output "<NAME>"
publish_output 키워드 뒤의 레이블은 게시된 출력의 이름이며, 같은 배포 구성 파일의 모든 게시된 출력 사이에서 고유해야 해요. 이름은 유효한 식별자라면 무엇이든 될 수 있어요.
publish_output 블록에서 다음 인자가 지원돼요:
| 인자 | 설명 | 타입 | 필수? |
|---|---|---|---|
value |
Stack에서 내보낼 값이에요. | 식 | 필수 |
description |
출력에 대한 사람 친화적인 설명이에요. | 문자열 | 선택 |
value
각 publish_output 블록에 value 인자를 포함해야 해요. Terraform은 value 인자의 식을 평가하고 그 결과를 출력의 반환 값으로 노출하며 그 값을 상태에 저장해요.
publish_output "vpc_id" {
value = <VALUE>
}
유효한 식이라면 무엇이든 출력 value가 될 수 있어요. 더 알아보려면 식을 참고해요.
요약 (Summary)
- 데이터 타입: 식
- 기본값: 없음
- 필수: 예
description
description 인자는 게시된 출력에 대한 사람 친화적인 설명을 제공해요. 설명은 다른 Stack 유지 관리자가 내보낸 값의 목적과 내용을 이해하는 데 도움이 돼요.
publish_output "<NAME>" {
description = "<DESCRIPTION>"
value = <VALUE>
}
요약 (Summary)
- 데이터 타입: 문자열
- 기본값: 없음
예시 (Examples)
다음 예시는 publish_output 블록의 일반적인 사용 사례를 보여줘요.
출력 게시 (Publish an output)
다음 예시에서 컴포넌트 구성은 배포될 때마다 web_server 컴포넌트가 만드는 vpc_id를 출력해요:
main.tfcomponent.hcl
output "vpc_id" {
description = "The ID of the main VPC for this environment"
type = string
value = component.web_server.vpc_id
}
component "web_server" {
source = "./modules/web_server"
inputs = {
#...
}
}
배포 구성에서 publish_output 블록은 staging 배포의 vpc_id 출력 값을 publish_output 블록을 사용해 노출해요:
main.tfdeploy.hcl
publish_output "staging_vpc_id" {
description = "The ID of the main VPC for this environment"
value = deployment.staging.vpc_id
}
deployment "staging" {
# ...
}
이제 같은 프로젝트의 다른 Stack이 upstream_input 블록을 사용해 이 Stack의 staging_vpc_id 출력을 소비할 수 있어요. staging_vpc_id의 값이 변경될 때마다 HCP Terraform은 staging_vpc_id를 사용하는 Stack에 대한 실행을 자동으로 트리거해요.
여러 배포의 게시된 출력 (Published output from multiple deployments)
다음 예시에서 primary와 secondary 두 배포는 별도의 게시된 출력인 primary_vpc_id와 secondary_vpc_id를 통해 VPC ID를 게시해요:
deployment "primary" {
inputs = {
region = "us-west-2"
}
}
deployment "secondary" {
inputs = {
region = "us-east-1"
}
}
publish_output "primary_vpc_id" {
description = "VPC ID from the primary region deployment"
value = deployment.primary.vpc_id
}
publish_output "secondary_vpc_id" {
description = "VPC ID from the secondary region deployment"
value = deployment.secondary.vpc_id
}