首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform -使用for将模块输出到文件

Terraform -使用for将模块输出到文件
EN

Stack Overflow用户
提问于 2021-11-03 15:13:08
回答 1查看 156关注 0票数 0

我有一个问题,我创建了许多返回id的虚拟机,我的输出如下所示:

代码语言:javascript
复制
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
  })
}

结果如下所示:

代码语言:javascript
复制
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循环中连接它:

代码语言:javascript
复制
output "ansible_inventory" {
  value = templatefile("${path.module}/templates/inventory.tpl",
    {
????
    }
  )
}

如果能帮上忙我会很感激

EN

回答 1

Stack Overflow用户

发布于 2021-11-09 12:58:21

我自己找到了答案:

代码语言:javascript
复制
data "template_file" "inventory" {
  template = file("${path.module}/templates/inventory.tpl")

  vars = {
    list_master = join("\n", formatlist("%s-%s ansible_user=root %s", var.prefix, keys(module.kubernetes.master_id), values(module.kubernetes.master_id)))
    list_worker = join("\n", formatlist("%s-%s ansible_user=root %s", var.prefix, keys(module.kubernetes.worker_id), values(module.kubernetes.worker_id)))
  }
}

resource "null_resource" "inventories" {
  provisioner "local-exec" {
    command = "echo '${data.template_file.inventory.rendered}' > ${var.inventory_file}"
  }

  triggers = {
    template = data.template_file.inventory.rendered
  }
}

我知道这个问题是不精确的,有时你只是不知道如何正确地提问;-)

谢谢你的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69827323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档