地形插值 0.12

Terraform interpolation 0.12

据此:

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
}

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

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

您可以在此 link:

上找到有关 HCL2 表达式的更多信息

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

你说得对,插值语法在 Terraform 0.12 中仍然有效。但是,现在不需要除非你试图将多个值组合成一个字符串,所以升级工具会自动重写以使用最简单的方式来表达相同的想法。

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