在另一个模板中包含一个 Terraform 模板
include a terraform template in another template
我有很多 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
模板功能非常相似:)
有没有办法以某种方式进行包含?
我可以通过像这样连接文件来解决问题:
data "template_file" "vars_a" {
template = "${format("%s \n %s",
file("${path.module}/base.tmpl"),
file("${path.module}/a.tmpl")
)}"
}
但这比直接在文件中包含基本模板更受限制。
我想你可以使用 templatefile:
a.tmpl
${file("base.tmpl")}
var=a
base.tmpl
var_ddd=ffff
var_sss=adfs
main.tf
data "template_file" "vars_a" {
template = templatefile("a.tmpl", {})
}
output "test" {
value = data.template_file.vars_a.template
}
我有很多 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
模板功能非常相似:)
有没有办法以某种方式进行包含?
我可以通过像这样连接文件来解决问题:
data "template_file" "vars_a" {
template = "${format("%s \n %s",
file("${path.module}/base.tmpl"),
file("${path.module}/a.tmpl")
)}"
}
但这比直接在文件中包含基本模板更受限制。
我想你可以使用 templatefile:
a.tmpl
${file("base.tmpl")}
var=a
base.tmpl
var_ddd=ffff
var_sss=adfs
main.tf
data "template_file" "vars_a" {
template = templatefile("a.tmpl", {})
}
output "test" {
value = data.template_file.vars_a.template
}