`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)

다음 예시에서 primarysecondary 두 배포는 별도의 게시된 출력인 primary_vpc_idsecondary_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
}

더 알아보기 (Learn more)