Terraform template_file将所有接收到的变量传递给函数

时间:2017-11-16 14:22:40

标签: variables terraform

是否在模板文件中的Terraforom中有一种方法可以将所有收到的变量传递到其他地方? 我的意思是比bash中的$ @类似。

例如:

resource "template_file" "some_template" {
    template = "my_template.tpl")}"
    vars {
        var1 = "value1"
        var2 = "value2"
    }
}

然后从渲染文件:

#!/bin/bash
echo "Var1: ${var1}"
echo "Var2: ${var2}"

echo "But I want it in someway similar to this:"
for v in $@; do 
  echo "$v"; 
done

2 个答案:

答案 0 :(得分:0)

根据文件,没有。

来自https://www.terraform.io/docs/providers/template/d/file.html

  

模板内插值的变量。注意变量   必须都是原始的。直接引用列表或映射将导致   验证错误。

terraform中的基元是字符串,数字和布尔值。

因此,这意味着您无法传递散列或列表来将所有变量组合在一起。

答案 1 :(得分:0)

使用join并将所有变量作为一个变量传递并在脚本中解析/分割(使用tr / IFS技巧)

join("; ", [var.myvar1, var.myvar2, var.myvar3])

然后

IN="${allvars}"
IFS=';' read -ra ADDR <<< "$IN"
for i in "${ADDR[@]}"; do
    echo "$i"
done