Terraform 기초: depends_on, output

2024. 11. 19. 21:14·탐구 생활/Terraform

Terraform 의존성과 Output 활용

지금까지 알아본 Terraform 블록은 resource와 variable이 전부였다. 이번 글에서는 output이라는 유용한 블록을 소개하고, depends_on이라는 argument를 다룬다.

1. depends_on

여러 리소스를 관리하다 보면 "의존적인 관계"에 있는 리소스들이 존재한다. AWS를 예로 들자면, 특정 VPC에 종속되어야 하는 security group은 VPC 리소스에 의존적일 수밖에 없다.

1.1 암시적 의존성

Terraform은 리소스 간의 참조 관계를 분석하여 자동으로 의존성을 생성한다. 예를 들어, security group이 특정 VPC의 ID를 참조할 때, Terraform은 이를 기반으로 암시적 의존성을 설정한다.


resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
}

resource "aws_security_group" "example" {
  vpc_id = aws_vpc.example.id
  name   = "example_sg"
}

위 코드에서 `aws_security_group`은 `aws_vpc`에 암시적으로 의존한다.

1.2 명시적 의존성

암시적 의존성으로 충분하지 않은 경우, depends_on을 사용하여 명시적으로 의존성을 설정할 수 있다.


resource "aws_vpc" "example" {
  cidr_block = "10.0.0.0/16"
}

resource "aws_security_group" "example" {
  name   = "example_sg"
  depends_on = [aws_vpc.example]
}

이 경우 `aws_security_group`은 명시적으로 `aws_vpc`에 의존하도록 지정된다.

2. Output

output 블록은 특정 값을 출력하거나 다른 Terraform 구성에서 사용할 수 있도록 전달한다. 주로 생성된 리소스의 ID, 속성값, 또는 설정값을 화면에 출력하는 데 사용된다.

2.1 Output 기본 사용


output "vpc_id" {
  value = aws_vpc.example.id
}

Terraform apply 후, 위 output은 생성된 VPC의 ID를 화면에 출력한다.

2.2 다른 구성으로 전달

Output은 Terraform 모듈 간 데이터를 전달하는 데에도 활용된다.


output "subnet_ids" {
  value = aws_subnet.example.*.id
}

# 다른 Terraform 구성에서:
module "network" {
  source = "./network_module"
}

output "module_subnet_ids" {
  value = module.network.subnet_ids
}

Output은 리소스의 결과를 공유하고, 작업 결과를 효율적으로 활용하는 데 필수적이다.

'탐구 생활 > Terraform' 카테고리의 다른 글

Terraform 기초: commands  (0) 2024.11.21
Terraform 기초: State  (0) 2024.11.21
Terraform 기초: HCL 기본기  (0) 2024.11.17
Terraform 소개  (0) 2024.11.17
IAC 개요 및 주요 도구  (1) 2024.11.17
'탐구 생활/Terraform' 카테고리의 다른 글
  • Terraform 기초: commands
  • Terraform 기초: State
  • Terraform 기초: HCL 기본기
  • Terraform 소개
개발프로브
개발프로브
가볍게, 오랫동안 기록하고 싶은 블로그입니다.
  • 개발프로브
    ProbeHub
    개발프로브
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 탐구 생활 (47)
        • 개발 탐구 (8)
        • FastAPI CORS (3)
        • FastAPI Log (4)
        • gRPC&Python (4)
        • SpringBoot 파헤치기 (2)
        • Python Monorepo (3)
        • Python 과 zstd (2)
        • Python (4)
        • FastAPI (4)
        • Terraform (8)
        • MSA (0)
        • GraphQL (2)
        • 데이터베이스 (2)
        • 네트워크 (0)
      • 기초 지식 (9)
        • Terraform (2)
        • MSA (5)
        • K8s (2)
  • 블로그 메뉴

    • 링크

      • github
      • stackoverflow
    • 공지사항

    • 인기 글

    • 태그

      springboot
      티스토리챌린지
      Python
      ORM 문제
      python arn64
      fastapi cors
      granian
      spring 트랜잭션
      sqlalchemy
      RDBMS 성능 최적화
      Terraform
      python 불변 객체
      brotli
      gzip
      python graviton
      fastapi logging
      ORM 성능
      django 성능 개선
      ORM 성능 최적화
      오블완
      python amd64
      rest vs grpc
      MSA
      python 성능 개선
      java
      PostgreSQL
      zstd
      grpc
      백엔드 성능
      FastAPI
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    개발프로브
    Terraform 기초: depends_on, output
    상단으로

    티스토리툴바