Создание корзины GCS с управлением версиями

Я хочу создать корзину 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), карту и список следующим образом.

карта

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

Список

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

Я попробовал это после прочтения этого документа GCP.


Ошибка ошибка Я получаю это, как показано ниже.

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"?

Модуль работает нормально, если я не использую аргументы управления версиями. Но я хочу создать модуль, который также может настроить управление версиями.

Пожалуйста, дайте мне знать, если я иду в неправильном направлении.

Любая помощь будет оценена по достоинству.


person Nirav    schedule 14.08.2019    source источник
comment
Откуда metageneration? У вас должен быть блок versioning = { "enabled" = true } и все.   -  person ydaetskcoR    schedule 15.08.2019
comment
Я читал это и догадался о ценности управления версиями. Спасибо вам за помощь. Работает с блоком версионирования {enabled=true}.   -  person Nirav    schedule 15.08.2019
comment
Используйте документы Terraform, чтобы выяснить, какие параметры следует использовать, а не базовые документы API.   -  person ydaetskcoR    schedule 15.08.2019
comment
Я понимаю. Большое спасибо.   -  person Nirav    schedule 15.08.2019


Ответы (1)


Сообщение об ошибке указывает, что аргумент управление версиями является блоком (а не картой), таким образом, включение '=' сбивает с толку Terraform.

Использовать:

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

НЕТ

resource "google_storage_bucket" "foo" {
    ...
    versioning = {
      enabled = true
    }
}
person ryanstephendavis    schedule 04.02.2020