Terraform 带引号和不带引号的变量样式之间有什么区别?

Terraform 带引号和不带引号的变量样式之间有什么区别?,terraform,Terraform,以下两种地形样式有什么不同,它们是否相同 vpc_id = aws_vpc.default.id Vs vpc_id = "${aws_vpc.default.id}" 第一个是HCL2表达式,第二个是插值 在terraform v.0.12.x之前使用插值,这就是为什么在互联网上仍然可以找到这种符号 如果您有v0.12.x,请使用“${aws_vpc.default.ip}”符号并运行命令terraform validate,您将收到警告: 警告:不推荐使用仅插值表达式

以下两种地形样式有什么不同,它们是否相同

vpc_id      = aws_vpc.default.id
Vs

vpc_id      = "${aws_vpc.default.id}"

第一个是HCL2表达式,第二个是插值

在terraform v.0.12.x之前使用插值,这就是为什么在互联网上仍然可以找到这种符号

如果您有v0.12.x,请使用
“${aws_vpc.default.ip}”
符号并运行命令
terraform validate
,您将收到警告:

警告:不推荐使用仅插值表达式

[……]

Terraform 0.11和更早版本要求通过插值语法提供所有非常量表达式,但现在不推荐使用这种模式。要使此警告静音,请删除此表达式开头的“${sequence”和结尾的“}”序列,只保留内部表达式

当模板包含多个插值序列或文字字符串和插值的混合时,模板插值语法仍然用于从表达式构造字符串。此弃用仅适用于完全由单个插值序列组成的模板


第一个是HCL2表达式,第二个是插值

在terraform v.0.12.x之前使用插值,这就是为什么在互联网上仍然可以找到这种符号

如果您有v0.12.x,请使用
“${aws_vpc.default.ip}”
符号并运行命令
terraform validate
,您将收到警告:

警告:不推荐使用仅插值表达式

[……]

Terraform 0.11和更早版本要求通过插值语法提供所有非常量表达式,但现在不推荐使用这种模式。要使此警告静音,请删除此表达式开头的“${sequence”和结尾的“}”序列,只保留内部表达式

当模板包含多个插值序列或文字字符串和插值的混合时,模板插值语法仍然用于从表达式构造字符串。此弃用仅适用于完全由单个插值序列组成的模板


何时使用插入和何时使用表达式?这取决于。。。如果您有terraform v0.11或更低版本,则需要到处插值。如果您有v0.12,您只需要为复杂字符串创建插值,例如,
“我的应用程序-${var.my_id}-来自帐户-${var.account_id}”
如果没有插值将无法工作。对于简单的参考,您不需要它。您可以通过运行
terraform version
来确定您的terraform版本,它将输出类似
terraform v0.12.26
何时使用interpolition和何时使用expression?这取决于。。。如果您有terraform v0.11或更低版本,则需要到处插值。如果您有v0.12,您只需要为复杂字符串创建插值,例如,
“我的应用程序-${var.my_id}-来自帐户-${var.account_id}”
如果没有插值将无法工作。对于简单的参考,您不需要它。您可以通过运行
terraformversion
来确定您的terraform版本,它将输出类似
terraformv0.12.26