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 |