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 와 서브넷이 서로 연결되게 된다.
# 흐름 요약
- VPC 모듈 : VPC 를 생성하고, 해당 VPC 의 ID 를 output 으로 설정한다.
- 서브넷 모듈 : VPC ID 를 인자로 받아 서브넷을 생성할 때 그 VPC 에 연결되도록 설정한다.
- 상위 구성 파일 : VPC 모듈에서 생성된 VPC ID 를 서브넷 모듈에 전달하여 VPC 와 서브넷이 연결된 인프라를 구성한다.