我正在使用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".
答案 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