我想创建带有版本控制的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"?
如果我不使用版本控制参数,则该模块可以正常工作。但是,我想创建一个也可以配置版本控制的模块。
如果我走错了方向,请告诉我。
任何帮助将不胜感激。
答案 0 :(得分:2)
错误消息表明 versioning 参数是一个块(而不是地图),因此包含'='会混淆Terraform。
使用:
resource "google_storage_bucket" "foo" {
...
versioning {
enabled = true
}
}
不
resource "google_storage_bucket" "foo" {
...
versioning = {
enabled = true
}
}