据此:
https://www.hashicorp.com/blog/terraform-0-12-template-syntax
Terraform正在将用于字符串(${}
)的插值语法扩展到循环和条件(这意味着插值语法对于字符串仍然有效)。
但是,如果我在terraform 0.12upgrade
脚本上运行.tf
,则会从以下位置更改输出文件中的语法:
output "OutputName" {
value = "${module.module_name.resource_name}"
}
对此:
output "OutputName" {
value = module.module_name.resource_name
}
为什么要重写我的插值语法?
答案 0 :(得分:0)
这是因为它将更新您的代码以使其更符合HCL2。在这种情况下,您要在配置中引用一个值,这可以通过使用HCL2表达式来实现。因此,升级工具正在用HCL2表达式替换旧插值。
您可以在此链接上找到有关HCL2表达的更多信息:
https://www.terraform.io/docs/configuration/expressions.html
答案 1 :(得分:0)
您正确的是,插值语法在Terraform 0.12中仍然是有效。但是,除非您尝试将多个值组合成一个字符串,否则它现在是不必要的。因此,升级工具会自动重写,以使用最简单的方式来表达相同的想法。
如果由于某些原因要保留插值标记,则可以忽略terraform 0.12upgrade
所做的更改,并按原样保留现有配置。但是,我建议您接受更改,因为多余的引号和内插标记不会添加任何其他信息或更改任何行为,因此是完全多余的。