从CLI将值传递到对象类型的Terraform变量中
我在从CLI将值传递到对象类型的Terraform变量中,terraform,terraform0.12+,Terraform,Terraform0.12+,我在variables.tf文件中声明了一个变量,如下所示: variable "linux_jb_0" { description = "Linux jump box settings" type = object( { vm_size = string adm_acct = string } ) default = { vm_size = "Standa
variables.tf
文件中声明了一个变量,如下所示:
variable "linux_jb_0" {
description = "Linux jump box settings"
type = object(
{
vm_size = string
adm_acct = string
}
)
default = {
vm_size = "Standard_A1"
adm_acct = null
}
}
我试图确定如何从命令行将值传递给此变量的adm\u acct
属性。我尝试了以下方法,但无效:
terraform apply -var "linux_jb_0={"adm_acct":$account","vm_size":"Standard_A1"}"
此命令告诉我不允许使用变量
。在这种情况下是否真的不允许使用变量,或者语法是否不正确?更新答案:
以下操作应在变量周围使用转义双引号:
terraform apply -var="linux_jb_0={"adm_acct":"\"${account}\"","vm_size":"Standard_A1"}"
感谢您的回复,但尝试了一下,这样做的目的是将
$account
显式传递为值…而不是存储在$account
中的值。我更新了答案。所以单引号绝对不适用于$account。如果它周围有双引号,它应该会起作用。双引号也不起作用。抛出错误无效表达式
@phydeauxman抱歉,我错过了为计算变量而需要转义的双引号。更新后的答案100%有效,但仍然没有乐趣。这个-var=“linux\u jb\u 0={“adm\u acct”:“${linux\u jb\u adm\u aact}\”,“vm\u size”:“Standard\u A1”}”
就是我使用的那一行,它说不允许使用变量
不能将变量值作为变量类型的输入或默认值进行插值。另外,account
在这种情况下是未定义的,因此无论如何它将是null
。@MattSchuchard$account是由执行terraform apply
命令的shell脚本定义的。多年来,我一直在使用-var“tfvariable=$cmdlineVariable”
格式从命令行将变量传递到Terraform…只是从来没有使用object
类型的Terraform变量。