我试图添加类型,但它没有捡起它,我很困惑如何给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_count
是number
,但tags
是list(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 = ...
}