我试图创建一个要创建的资源列表,该列表将传递给模块。当尝试这个:
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_create或locals。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)