2

我想创建带有版本控制的 GCS 存储桶。

我创建了子模块。

resource "google_storage_bucket" "cloud_storage" {
    project = "${var.project}"
    name = "${var.storage_name}"
    location = "${var.location}"
    storage_class = "${var.storage_class}"
    versioning = "${var.versioning}"
}

根据 Terraform doc,我可以传递版本控制参数来配置版本控制。

我不知道接受什么样的数据版本控制参数。我尝试传递 bool (true)、map 和 list 如下。

地图

variable "versioning" {
  type = list
  default = {
    generation = true,
    metageneration = true
  }
}

列表

variable "versioning" {
  type = list
  default = [
    "generation",
    "metageneration"
  ]
  description = "Enable versioning on Bucket"
}

我在阅读此 GCP Doc后尝试了此操作


错误 错误我得到它如下。

Error: Unsupported argument

  on ../modules/storage/main.tf line 6, in resource "google_storage_bucket" "cloud_storage":
   6:     versioning = "${var.versioning}"

An argument named "versioning" is not expected here. Did you mean to define a
block of type "versioning"?

如果我不使用版本控制参数,该模块工作正常。但是,我想创建也可以配置版本控制的模块。

如果我走错了方向,请告诉我。

任何帮助,将不胜感激。

4

1 回答 1

3

错误消息表明版本控制参数是一个块(不是地图),因此包含“=”会混淆 Terraform。

利用:

resource "google_storage_bucket" "foo" {
    ...
    versioning {
      enabled = true
    }
}

不是

resource "google_storage_bucket" "foo" {
    ...
    versioning = {
      enabled = true
    }
}
于 2020-02-04T20:44:30.030 回答