在locals中创建的联合列表



我试图创建一个要创建的资源列表,该列表将传递给模块。当尝试这个:

variable "number_of_nodes" {
default = 5
}
locals {
nodes_to_create      = [for node in range(var.number_of_nodes) : ["k8s-node-${node}", false]]
controller_to_create = [["k8s-ctl", true]]
vms_to_create = setunion(nodes_to_create, controller_to_create)
}
output "test1" {
value = local.controller_to_create
}
output "test2" {
value = local.nodes_to_create
}
output "test3" {
value = local.vms_to_create
}

得到以下错误:

Error: Invalid reference
│
│   on main.tf line 8, in locals:
│    8:   vms_to_create = setunion(nodes_to_create, controller_to_create)
│
│ A reference to a resource type must be followed by at least one attribute access, specifying the resource name.

Error: Invalid reference
│
│   on main.tf line 8, in locals:
│    8:   vms_to_create = setunion(nodes_to_create, controller_to_create)
│
│ A reference to a resource type must be followed by at least one attribute access, specifying the resource name.

我已经尝试使用本地引用列表。Nodes_to_createlocals。Controller_to_create无效。如何组合这两个列表,以便将单个列表传递给模块?

您仍然需要在变量本身中使用local说明符:

locals {
nodes_to_create      = [for node in range(var.number_of_nodes) : ["k8s-node-${node}", false]]
controller_to_create = [["k8s-ctl", true]]
vms_to_create = setunion(local.nodes_to_create, local.controller_to_create)
}

由于这些是局部变量,您需要告诉terraform您正在引用它们,因此,而不是:

vms_to_create = setunion(nodes_to_create, controller_to_create)

你需要:

vms_to_create = setunion(local.nodes_to_create, local.controller_to_create)

最新更新