使用 terraform 创建多个 GCP 存储桶

Create multiple GCP storage buckets using terraform

我已经使用 Terraform 脚本在 GCP 中创建资源。脚本工作正常。但我的问题是 - 如何使用单个脚本创建多个存储桶。 我有两个用于创建存储桶的文件- main.tf 其中有 terraform code 来创建存储桶。 variables.tf 其中包含存储桶名称、project_id 等实际变量,如下所示:

variable "storage_class" { default = "STANDARD" }
variable "name" { default = "internal-demo-bucket-1"}
variable "location" { default = "asia-southeast1" }

如何在变量名中提供多个桶名?我尝试在数组中提供多个名称,但构建失败。

我不知道您的所有要求,但是假设您需要创建几个名称不同的存储桶,而所有其他存储桶特征对于正在讨论的集合中的每个存储桶都是不变的。

我会在 variables.tf 文件中创建一个变量,即 bucket_name_set

variable "bucket_name_set" {
  description = "A set of GCS bucket names..."
  type        = list(string)
}

然后,在 terraform.tfvars 文件中,我将为存储桶提供唯一的名称:

bucket_name_set = [
  "some-bucket-name-001",
  "some-bucket-name-002",
  "some-bucket-name-003",
]

现在,例如,在 main.tf 文件中我可以描述资源:

resource "google_storage_bucket" "my_bucket_set" {
  project       = "some project id should be here"

  for_each      = toset(var.bucket_name_set)
  name          = each.value     # note: each.key and each.value are the same for a set

  location      = "some region should be here"
  storage_class = "STANDARD"
  force_destroy = true

  uniform_bucket_level_access = true
}

地形描述在这里:The for_each Meta-Argument

GCS 桶的 Terraform 描述在这里:google_storage_bucket

输入变量的 Terraform 描述在这里:Input Variables

您是否考虑过使用 terraform 提供的模块?如果您使用 gcs 模块创建存储桶,这将变得非常容易。它有一个选项可以指定您需要创建多少个存储桶,甚至是子文件夹。我包含以下模块供您参考

https://registry.terraform.io/modules/terraform-google-modules/cloud-storage/google/latest