`upstream_input` 블록 참조
upstream_input 블록 참조 (upstream_input block reference)
upstream_input 블록을 사용해 같은 프로젝트에 있는 다른 Stack의 출력을 소비해 현재 Stack에 사용해요. 이 페이지에서는 upstream_input 블록의 구성 모델과 지원 인자를 다룰게요.
출처: 문서
본문
upstream_input 블록을 사용해 같은 프로젝트에 있는 다른 Stack의 출력을 소비해 현재 Stack에 사용해요.
배경 (Background)
참고: upstream_input 블록은 Terraform 버전 1.10.0-alpha20241009 이상이 필요해요.
Stack은 배포 구성에 publish_output 블록을 정의해 다른 Stack에 출력을 노출할 수 있어요.
upstream_input 블록은 출력을 소비할 같은 프로젝트의 다른 Stack을 지정해요. 출력을 참조하려는 각 Stack에 대해 upstream_input 블록을 선언해야 해요. 업스트림 Stack의 출력이 변경되면 HCP Terraform은 그 출력에 의존하는 모든 Stack에 대해 실행을 자동으로 트리거해요.
업스트림 입력을 사용해 Stack 사이에 의존성을 만들어 Stack 아키텍처의 서로 다른 부분 사이에서 인프라 세부 사항을 공유할 수 있어요. 더 알아보고 예시를 보려면 Stack 간 데이터 전달을 참고해요.
구성 모델 (Configuration model)
upstream_input 블록은 다음 인자를 지원해요:
upstream_input "<NAME>"블록type문자열source문자열
완전한 구성 (Complete configuration)
사용 가능한 모든 인자는 다음 upstream_input 블록에 정의돼 있어요:
upstream_input "<NAME>" {
type = "stack"
source = "<SOURCE>"
}
사양 (Specification)
upstream_input 블록은 다음 구성을 지원해요.
upstream_input "<NAME>"
upstream_input 키워드 뒤의 레이블은 업스트림 입력의 이름이며, 같은 배포 구성 파일의 모든 업스트림 입력 사이에서 고유해야 해요. 이름은 유효한 식별자라면 무엇이든 될 수 있어요.
upstream_input 블록에서 다음 인자가 지원돼요:
| 인자 | 설명 | 타입 | 필수? |
|---|---|---|---|
type |
업스트림 소스의 타입이에요. HCP Terraform은 "stack"만 지원해요. | 문자열 | 필수 |
source |
게시된 출력을 소스로 사용할 Stack을 URL로 지정한 것이에요. | 문자열 | 필수 |
type
type 인자는 출력을 소비할 업스트림 소스의 타입으로 "stack"을 지정해요.
upstream_input "network_stack" {
type = "stack"
source = "app.terraform.io/<ORG>/<PROJECT>/<STACK>"
}
요약 (Summary)
- 데이터 타입: 문자열
- 기본값: 없음
- 필수: 예
source
source 인자는 출력을 소비하려는 업스트림 Stack의 URL을 지정해요:
upstream_input "database_stack" {
type = "stack"
source = "app.terraform.io/<ORG>/<PROJECT>/<STACK>"
}
소스 URL은 현재 Stack과 같은 프로젝트에 존재하는 Stack을 참조해야 해요.
요약 (Summary)
- 데이터 타입: 문자열
- 기본값: 없음
- 필수: 예
예시 (Examples)
다음 예시는 upstream_input 블록의 일반적인 사용 사례를 보여줘요.
기본 업스트림 입력 (Fundamental upstream input)
다음 예시에서 upstream_input 블록은 출력을 소비할 networking이라는 Stack을 지정해요:
upstream_input "network_stack" {
type = "stack"
source = "app.terraform.io/myorg/myproject/networking"
}
deployment "application" {
inputs = {
vpc_id = upstream_input.network_stack.vpc_id
private_subnet_ids = upstream_input.network_stack.private_subnet_ids
security_group_id = upstream_input.network_stack.default_security_group_id
}
}
network_stack 업스트림 입력을 추가한 후 배포는 networking Stack의 publish_output 블록에 있는 어떤 값이든 참조할 수 있어요.
upstream_input 블록을 정의한 후 upstream_input.<NAME>.<OUTPUT> 구문을 사용해 업스트림 Stack의 게시된 출력에 접근할 수 있어요. 따라서 application 배포는 upstream_input.network_stack.<OUTPUT>을 사용해 network_stack의 출력을 참조할 수 있어요.