【发布时间】:2021-12-17 23:29:15
【问题描述】:
我有一个问题,我创建了许多返回 id 的 VM,我的输出如下所示:
output "master_id" {
value = tomap({
for k, master in cloudstack_instance.master :
k => master.id
})
}
output "worker_id" {
value = tomap({
for k, worker in cloudstack_instance.worker :
k => worker.id
})
}
结果如下:
master_id = tomap({
"adm-1" = "0765b24e-1bd9-42a8-acf6-3463be494574"
"adm-2" = "2a19ba2e-9aee-4a0a-aaf4-efdf228b6ab3"
})
worker_id = tomap({
"wrk-1" = "643cbd23-0323-4738-9eab-d5c453772a37"
"wrk-2" = "7b088d49-de02-4a67-bcb9-b18146a332d5"
"wrk-3" = "c81761ae-23cc-4a47-b989-8d37574cc258"
})
我想使用模板将结果保存到文件中,不幸的是我不知道如何在 for 循环中连接它:
output "ansible_inventory" {
value = templatefile("${path.module}/templates/inventory.tpl",
{
????
}
)
}
我会很感激你的帮助
【问题讨论】:
-
1.
master_id和worker_id已经是 Map 类型,不需要tomap函数。 2. 请阐明这些输出应该如何使用和/或出现在您的渲染模板中。在将变量值传递给templatefile的参数中,您希望使用????实现什么目标尚不清楚。 -
此外,根据您的标签和输出名为
ansible_inventory的事实,您可能需要检查关于从动态 Terraform 输出生成静态 Ansible 清单的问题和答案。您可能会在其中之一中找到您的解决方案。 -
stackoverflow.com/a/63846090/9472275 这有帮助吗? :D
local_file资源
标签: ansible terraform ansible-inventory terraform-provider-gcp terraform-template-file