terraform - 此默认值与变量的类型约束不兼容:元素“标签”:需要字符串
问题描述
我正在尝试添加类型但它没有拾取它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
是 a number
,但是tags
是 a 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 = ...
}
推荐阅读
- xamarin.forms - 在 Android 上将列表视图滚动到顶部
- java - 从整数数组列表中选择
- c - 我在这个 C 程序中检查字符串是否是回文时做错了什么?
- java - 字符串请求发布未显示任何错误
- node.js - How to set a Loopback nodeJS backend on Apache HTTP server running on CentOS
- c - 让 C 程序在等待 Raspberry Pi 上的 GPIO 输入时什么都不做?
- r - 将 getOOBPreds 与嵌套重采样和参数调整相结合
- visual-studio - Visual Studio does not compile into debug and release directories
- ruby - 指定要在 Capistrano 中使用的 Bundler 版本
- chaquopy - Please set python.buildPython to your Python executable path