0

根据这个:

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
}

为什么要重写我的插值语法?

4

2 回答 2

0

这是因为它正在更新您的代码以更符合 HCL2。在这种情况下,您指的是配置中的一个值,这可以通过使用 HCL2 表达式来实现。因此,升级工具正在用 HCL2 表达式替换旧的插值。

您可以在此链接上找到有关 HCL2 表达式的更多信息:

https://www.terraform.io/docs/configuration/expressions.html

于 2019-09-03T14:46:08.130 回答
0

您是正确的,插值语法在 Terraform 0.12中仍然有效。但是,除非您尝试将多个值组合成一个字符串,否则现在没有必要,因此升级工具会自动重写以使用最简单的方式来表达相同的想法。

如果出于某种原因要保留插值标记,则可以忽略由所做的更改terraform 0.12upgrade并按原样保留现有配置。但是,我建议接受更改,因为额外的引号和插值标记不会添加任何其他信息或更改任何行为,因此完全是多余的。

于 2019-09-03T19:44:42.683 回答