흰 스타렉스에서 내가 내리지

Terraform 에서 모듈 간 데이터를 전달 예시 본문

DevOps

Terraform 에서 모듈 간 데이터를 전달 예시

주씨. 2024. 9. 20. 15:59
728x90

# 개요

모듈 간 데이터를 전달하는 것을 통해 코드를 재사용 가능케 하고 인프라 구성을 보다 효율적으로 관리할 수 있다. 

 

 

# 예시

1. VPC 모듈과 서브넷 모듈 

먼저, VPC 를 생성하는 모듈에서 VPC 의 ID 를 output 으로 정의하고, 이 값을 서브넷을 생성하는 모듈에서 받아서 사용한다고 가정해보자.

 

VPC 모듈 (vpc/main.tf)

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

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

 

위 코드는 VPC 를 생성하고, VPC 의 ID 를 output 으로 노출시킨다. 

이 output 값을 다른 모듈에서 참조할 수 있다. 

 

서브넷 모듈 (subnet/main.tf)

resource "aws_subnet" "main" {
  vpc_id     = var.vpc_id
  cidr_block = "10.0.1.0/24"
}

variable "vpc_id" {
  description = "The ID of the VPC where the subnet will be created"
  type        = string
}

 

이 서브넷 모듈은 `vpc_id` 라는 변수를 기대하고 있으며, 이를 통해 서브넷을 생성할 VPC 를 저장하게 된다. 

 

 

상위 Terraform 구성 파일 (main.tf)

이제 이 두 모듈을 함께 사용하는 상위 구성 파일을 작성한다.

module "vpc" {
  source = "./vpc"
}

module "subnet" {
  source = "./subnet"
  vpc_id = module.vpc.vpc_id
}

 

여기서 `module.vpc.vpc_id` 는 VPC 모듈에서 정의한 `output` 을 참조하고 있다. 

VPC 모듈에서 `output` 으로 노출된 VPC ID 가 서브넷 모듈에서 사용되면서, VPC 와 서브넷이 서로 연결되게 된다. 

 

 

 

# 흐름 요약

  1. VPC 모듈 : VPC 를 생성하고, 해당 VPC 의 ID 를 output 으로 설정한다.
  2. 서브넷 모듈 : VPC ID 를 인자로 받아 서브넷을 생성할 때 그 VPC 에 연결되도록 설정한다. 
  3. 상위 구성 파일 : VPC 모듈에서 생성된 VPC ID 를 서브넷 모듈에 전달하여 VPC 와 서브넷이 연결된 인프라를 구성한다.