gpt4 book ai didi

terraform - 如何输出使用 count 的数据源?

转载 作者:行者123 更新时间:2023-12-02 20:11:11 30 4
gpt4 key购买 nike

我想输出创建的每个虚拟机及其 UUID,例如

data "vsphere_virtual_machine" "vms" {
count = "${length(var.vm_names)}"
name = "${var.vm_names[count.index]}"
datacenter_id = "12345"
}

output "vm_to_uuid" {
# value = "${data.vsphere_virtual_machine.newvms[count.index].name}"
value = "${data.vsphere_virtual_machine.newvms[count.index].id}"
}

我正在寻找的示例输出:

"vm_to_uuids":[
{
"name":"node1",
"id":"123456",
},
{
"name":"node2",
"id":"987654",
}
]

最佳答案

在为输出给出的表达式中使用通配符属性来获取已创建虚拟机的ID列表。 例如

output "vm_to_uuids" {
value = "${data.vsphere_virtual_machine.*.id}"
}

您的问题中提供的所需语法是一种豁免,即优先考虑功能而不是形式。编写提供此功能的 terraform 配置并不简单。也许,我建议采用其他更简单的方式来输出相同的信息。

可以输出映射到 ids 的名称:

output "vm_to_uuids" {
value = "${zipmap(
data.vsphere_virtual_machine.*.name,
data.vsphere_virtual_machine.*.id)}"
}

名称和 ID 的映射可以以柱状方式输出:

output "vm_to_uuids" {
value = "${map("name",
data.vsphere_virtual_machine.*.name,
"id",
data.vsphere_virtual_machine.*.id)}"
}

可以以柱状方式输出名称和 ID 的列表:

output "vm_to_uuids" {
value = "${list(
data.vsphere_virtual_machine.*.name,
data.vsphere_virtual_machine.*.id)}"
}

关于terraform - 如何输出使用 count 的数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53585084/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com