`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의 출력을 참조할 수 있어요.

더 알아보기 (Learn more)