正确的Terraform template_provider数据源输出方式

时间:2018-09-26 17:14:15

标签: terraform terraform-template-file

我正在尝试使用Terraform中的模板渲染地图的输出:       variable "default_tags" { type = "map" default = { "tag1" ="Tag A", "tag2" ="Tag B" } } 定义template_file数据源以渲染地图:

```
data "template_file" "test" {
  template = "${data}"
  vars {
    data = "${join(",", formatlist("key: %s, val: %s. ",     keys(var.default_tags), values(var.default_tags)))}"
  }
}
```

我的输出块应该看起来像这样:

```
 output "default_tags_rendered" {
  value="${data.template_file.test.rendered}"
 }
```

但是在计划时出现此错误:

 ```
 Error: data.template_file.test: 1 error(s) occurred:
 * data.template_file.test: invalid variable syntax: "data". Did you mean      'var.data'? If this is part of inline `template` parameter
 then you must escape the interpolation with two dollar signs. For
 example: ${a} becomes $${a}.
 ```

输出呈现的模板的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

这可能更适合像这样使用local values

locals {
  data = "${join(",", formatlist("key: %s, val: %s. ", keys(var.default_tags), values(var.default_tags)))}"
}

output "default_tags_rendered" {
 value="${local.data}"
}

原因是因为template_file provisioner主要用于需要通过标准插值语法运行的文件(或内联模板)。在这种情况下,您无需在模板中插入任何变量-您有一个要传入的变量,则需要对其值进行变异。