Day-08: terraform의 Meta Arguments
발행: (2025년 12월 2일 오후 03:04 GMT+9)
2 min read
원문: Dev.to
Source: Dev.to
메타 인수
Terraform은 리소스 동작을 제어하는 다섯 가지 메타‑인수를 제공합니다:
depends_oncountfor_eachproviderlifecycle
count
count는 값 목록을 반복(iterate)하는 데 사용됩니다.
// variables.tf
variable "bucket_count_list" {
type = list(string)
default = [
"bhaskaratejabulusu-bucket-day-08-list-1",
"bhaskaratejabulusu-bucket-day-08-list-2"
]
}
// main.tf
resource "aws_s3_bucket" "bucket1" {
count = length(var.bucket_count_list)
bucket = var.bucket_count_list[count.index] // 0부터 count‑1까지 반복
}
for_each
for_each는 값 또는 키‑값 쌍을 반복합니다. 맵(map)과 집합(set)에서 사용할 수 있으며, 변수의 타입은 map 또는 set이어야 합니다.
집합 예시
// variables.tf
variable "bucket_count_set" {
type = set(string)
default = [
"bhaskaratejabulusu-bucket-day-08-set-1",
"bhaskaratejabulusu-bucket-day-08-set-2"
]
}
// main.tf
resource "aws_s3_bucket" "bucket2" {
for_each = var.bucket_count_set
bucket = each.value // 집합을 반복
}
맵 예시
// variables.tf
variable "bucket_count_map" {
type = map(string)
default = {
bucket1 = "bhaskaratejabulusu-bucket-day-08-map-1",
bucket2 = "bhaskaratejabulusu-bucket-day-08-map-2"
}
}
// main.tf
resource "aws_s3_bucket" "bucket3" {
for_each = var.bucket_count_map
bucket = each.value
}
depends_on
depends_on은 리소스 간의 의존성을 명시적으로 선언하여 Terraform이 올바른 순서로 리소스를 생성하도록 합니다.
// main.tf
resource "aws_s3_bucket" "bucket1" {
count = length(var.bucket_count_list)
bucket = var.bucket_count_list[count.index]
}
resource "aws_s3_bucket" "bucket2" {
for_each = var.bucket_count_set
bucket = each.value
depends_on = [aws_s3_bucket.bucket1]
}
이 예시에서 bucket2는 bucket1에 의존합니다; Terraform은 bucket1이 생성될 때까지 기다렸다가 bucket2를 프로비저닝합니다.