此默认值与变量的类型约束不兼容:元素 "tags" :需要字符串



我试图添加类型,但它没有捡起它,我很困惑如何给boot_disk和'network_interface'类型,如果我创建的类型为对象。错误:│ This default value is not compatible with the variable's type constraint: element "tags": string required.

variable worker {
type        = map(string)
default     = {
worker_count = 2
name         = "k3s-master"
machine_type = "n1-standard-1"
tags         = ["k3s", "k3s-master"]
zone         = "us-central1-a"

boot_disk = {
initialize_params = {
image = "debian-9-stretch-v20200805"
}
}
network_interface = {
network = "default"
}
}
}

@MarkoE在评论中的回答很接近,但不完全正确。Terraform的map类型是一个"集合",并且根据Terraform的文档,"集合的所有元素必须始终是相同的类型">

由于您的变量对不同的字段有不同的类型(例如worker_countnumber,但tagslist(string)),map(any)将不起作用。

因为看起来你想要严格的类型变量,你可能想要的是object类型。在您的例子中,它看起来像这样:

variable "worker" {
type = object({
worker_count = number
name         = string
machine_type = string
tags         = list(string)
zone         = string
boot_disk    = object({
initialize_params = object({
image = string
})
})
network_interface = object({
network = string
})
})
default = ...
}

最新更新