我有一个这样的Terraform资源定义:
variable "NUM_NODES" {
type = number
}
resource "aws_resource" {
num_nodes = var.NUM_NODES
}
对num_nodes的资源有一个限制,如果存在,则不能为空。是否有一种方法可以让terraform忽略"aws_resource"上没有值的键?所以键num_nodes根本不包括在内?
如果这是不可能的最好的选择是什么?有人能帮我吗?
我已经尝试将NUM_NODES的默认值设置为null
variable "NUM_NODES" {
type = number
default = null
}
但是继续看到关于'输入变量的无效值'的错误,而不是忽略它
当定义由提供者自己声明的resource
块中的参数时,将参数设置为null
与根本不设置参数完全相同。
null
,将变量声明为可选变量,然后将值直接赋值给参数:
# NOTE: It's conventional to name Terraform variables in lowercase
variable "node_count" {
type = number
default = null
}
resource "example" "example" {
num_nodes = var.node_count
}
提供者没有办法区分一个参数被完全取消还是被设置为空,因为在Terraform用来与提供者对话的协议中,这两者的表示是相同的。
如果您尝试这样做并看到有问题的参数的验证错误,那么一定有其他事情没有反映在这个示例中。例如,如果您在调用module
块中实际设置node_count
,则不会使用null
的默认值,因此将由调用模块为该参数提供有效值,或者显式地将其设置为null
。