第08天:Terraform 中的元参数
发布: (2025年12月2日 GMT+8 14:04)
2 min read
原文: Dev.to
Source: Dev.to
元参数
Terraform 提供了五个元参数来控制资源行为:
depends_oncountfor_eachproviderlifecycle
count
count 用于遍历一个值列表。
// 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] // iterates from 0 to 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 // iterates over the set
}
映射示例
// 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 会在创建 bucket2 之前等待 bucket1 完成创建。