【问题标题】:Passing many ENVs to terraform template将许多 ENV 传递给 terraform 模板
【发布时间】:2020-07-06 23:22:40
【问题描述】:

有没有办法将许多 ENV 一起传递给 Terraform 中的模板文件,而无需像这样单独声明它们:

data "template_file" "test_template" {
  template = file("templates/container.tpl")
  vars = {
    ENV1 = var.ENV1
    ENV2 = var.ENV2
    ENV3 = var.ENV3
    ENV4 = var.ENV4
    ENV5 = var.ENV5
  }
}

在模板里面有这样的吗?:

[
  {
    "essential": true,
    "memory": 300,
    "name": "client",
    "cpu": 300,
    "image": "some_image",
    "portMappings": [
        {
            "containerPort": 3000,
            "hostPort": 0
        }
    ],
    "environment": [
      { "name": "ENV1", "value": "${ENV1}" },
      { "name": "ENV2", "value": "${ENV2}" },
      { "name": "ENV3", "value": "${ENV3}" },
      { "name": "ENV4", "value": "${ENV4}" },
      { "name": "ENV5", "value": "${ENV5}" },
    ]
  }
]

【问题讨论】:

  • 您使用的是什么版本的 Terraform?你能提供一个更有效的例子来说明这应该如何工作吗?应用程序是否期望在ENV1ENV2 等处检索环境值?还是您想将键和值传递给 ECS 任务(例如 FOO = "BAR => { "name": "FOO", "value": "BAR"}
  • 我的版本是0.12.26。应用程序是否期望在 ENV1 和 ENV2 等处检索环境值 - 是的。或者您是否想将密钥和值传递给 ECS 任务 - 是的。我想要的只是不要在 template_file 级别声明它们,而是使用一些扩展语法(?)。

标签: terraform terraform-provider-aws


【解决方案1】:

在 terraform 0.12 中,建议您使用:

https://www.terraform.io/docs/configuration/functions/templatefile.html

模板:

%{ for addr in ip_addrs ~}
backend ${addr}:${port}
%{ endfor ~}

呼叫:

templatefile("${path.module}/backends.tmpl", { port = 8080, ip_addrs = ["10.0.0.1", "10.0.0.2"] })

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2020-09-15
    • 2016-11-17
    • 2021-04-14
    • 2018-09-07
    • 1970-01-01
    • 2021-12-13
    • 2017-09-23
    • 1970-01-01
    相关资源
    最近更新 更多