从 CLI 将值传递到对象类型的 Terraform 变量

phy*_*man 6 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  = "Standard_A1"
            adm_acct = null
    } 
}
Run Code Online (Sandbox Code Playgroud)

我试图确定如何adm_acct从命令行将值传递给该变量的属性。我已经尝试过以下方法,但它不起作用:

terraform apply -var "linux_jb_0={"adm_acct":$account","vm_size":"Standard_A1"}"
Run Code Online (Sandbox Code Playgroud)

这个命令告诉我Variables not allowed。在这种情况下真的不允许使用变量还是我的语法不正确?

Ben*_*ley 8

此语法适用于 Terraform v1.0.0:

terraform apply -var "linux_jb_0={\"adm_acct\"=\"$account\",\"vm_size\"=\"Standard_A1\"}"
Run Code Online (Sandbox Code Playgroud)

确认此语法可以追溯到 Terraform v0.12.31。


mar*_*ber 0

更新答案:

以下应该使用变量周围的转义双引号来解决这个问题:

terraform apply -var="linux_jb_0={"adm_acct":"\"${account}\"","vm_size":"Standard_A1"}"
Run Code Online (Sandbox Code Playgroud)