使用版本控制创建GCS存储桶

时间:2019-08-14 15:19:08

标签: terraform terraform-provider-gcp

我想创建带有版本控制的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,我可以传递版本控制参数来配置版本控制。

我不知道版本参数接受哪种数据。我尝试按照以下方式传递布尔值(true),地图和列表。

地图

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

列表

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

我在阅读this 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"?

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

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

错误消息表明 versioning 参数是一个块(而不是地图),因此包含'='会混淆Terraform。

使用:

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

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