我可以在Terraform中转义大括号符号吗?

时间:2019-05-30 17:27:15

标签: terraform

我正在使用terraform template_file数据资源来创建一个文件,该文件应在应用堆栈时写入动态创建的EC2实例。换句话说,我希望在新创建的EC2实例的主文件夹中创建此文件。但是,此文件包含大括号试图插入的大括号语法${}。如何摆脱这些花括号?

作为背景,我正在使用cloud-config语法编写这些文件。

例如:

${username}应该写入文件,不要以Terraform插值。

即使我使用双美元符号$$,terraform仍然会失败,因为它找不到变量:

... failed to render : <template_file>:105,18-26: Unknown variable; There is no variable named "username".

2 个答案:

答案 0 :(得分:0)

仅供参考,最后我通过将模板写入另一个文件,然后使用file方法将其读取到terraform堆栈中来解决此问题:

data "template_file" "config" {
  template = "${file("./user_data.tpl")}"
}

答案 1 :(得分:0)

Terraform 对花括号使用了相当独特的转义:

<头>
序列 更换
$${ 文字 ${,没有开始插值序列。
%%{ 文字 %{,不以模板指令序列开头。

参考文档:https://www.terraform.io/docs/language/expressions/strings.html