在另一个模板中包含一个 terraform 模板

Posted

技术标签:

【中文标题】在另一个模板中包含一个 terraform 模板【英文标题】:include a terraform template in another template 【发布时间】:2021-06-23 05:28:35 【问题描述】:

我有很多 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://***.com/a/10985987/245024)

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


我可以通过像这样连接文件来解决问题:

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

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

【问题讨论】:

【参考方案1】:

我认为你可以使用templatefile:

a.tmpl

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

base.tmpl

var_ddd=ffff
var_sss=adfs

ma​​in.tf

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


output "test" 
  value = data.template_file.vars_a.template

【讨论】:

以上是关于在另一个模板中包含一个 terraform 模板的主要内容,如果未能解决你的问题,请参考以下文章

Jekyll:在另一个帖子中包含一个帖子

如何在通过 pip 安装的应用程序中包含 django 模板?

在 Django HTML 模板中包含一个简单的函数

如何在 Jinja2 中包含具有相对路径的模板

如何在 cloudFormation 模板中包含 cloudWatch 日志组订阅?

如何在子模板中包含部分模板