地形插值 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
所做的更改并按原样保留现有配置。但是,我建议接受更改,因为额外的引号和插值标记不会添加任何附加信息或更改任何行为,因此完全是多余的。
据此:
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
所做的更改并按原样保留现有配置。但是,我建议接受更改,因为额外的引号和插值标记不会添加任何附加信息或更改任何行为,因此完全是多余的。