有什么更好的方式在Terraform中对资源进行分组?
例如,我有两个S3存储桶:
resource "aws_s3_bucket" "name1" {
provider = aws.provider
bucket = "name1"
acl = "private"
force_destroy = true
versioning {
enabled = false
}
}
resource "aws_s3_bucket" "name2" {
provider = aws.provider
bucket = "name2"
acl = "private"
force_destroy = true
versioning {
enabled = false
}
}
将这两个存储桶分组的更好的方法是什么?
类似的东西:
resource "some_terraform_resource_group" "group_name" {
? depends_on = ... ?
resources_in_group = [
aws_s3_bucket.name1,
aws_s3_bucket.name2
]
provider = aws.provider
some_others options = ...
}
并且可以运行:
terraform apply -target=some_terraform_resource_group.group_name
terraform destroy -target=some_terraform_resource_group.group_name
答案 0 :(得分:1)
在您的示例中,terraform中没有特殊的组资源,但是根据您的描述,可以使用常规的for_each。
例如:
variable "bucket_names" {
default = ["name1", "name2"]
}
resource "aws_s3_bucket" "name" {
for_each = toset(var.bucket_names)
provider = aws.provider
bucket = each.value
acl = "private"
force_destroy = true
versioning {
enabled = false
}
}
然后,生成的aws_s3_bucket.name
的行为类似于包含两个存储桶资源的组。
要对不同类型的资源进行“分组”,可以使用地形modules。