1

我有许多 terraform 脚本使用的模板文件,所有模板文件都有一些共同的部分,即:

file a.tmpl:

env=prod
var=a
-------------------
file b.tmpl:

env=prod
var=b

我想将公共部分导出到单独的文件中,这样就不必在每个文件中重复,例如:

file base.tmpl:
env=prod
-------------------
file a.tmpl:

%{ include "base.tmpl" }
var=a
-------------------
file b.tmpl:

%{ include "base.tmpl" }
var=b

但该功能不存在

django(它与此处描述的模板功能非常相似: https ://stackoverflow.com/a/10985987/245024 )

有没有办法以某种方式进行包含?


我能够通过连接这样的文件来解决问题:

data "template_file" "vars_a" {
  template = "${format("%s \n %s", 
    file("${path.module}/base.tmpl"), 
    file("${path.module}/a.tmpl")
   )}"
}

但这比直接在文件中包含基本模板更具限制性。

4

1 回答 1

1

我认为您可以使用templatefile

一个.tmpl

${file("base.tmpl")}
var=a

基础.tmpl

var_ddd=ffff
var_sss=adfs

主文件

data "template_file" "vars_a" {
  template = templatefile("a.tmpl", {})
}

output "test" {
  value = data.template_file.vars_a.template
}
于 2021-03-26T12:23:34.600 回答