Terraform如何在变量为空时从资源中删除键?



我有一个这样的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

最新更新