Terraform:有什么方法可以为 apply/destroy 对目标(资源)进行分组吗?

Terraform: Is there any way to group targets (resources) for apply/destroy?

在 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

在您的示例中,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 将像一个包含两个资源的组一样用于您的存储桶。

根据评论更新

要“分组”不同类型的资源,您可以使用 terraform modules