Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从CLI将值传递到对象类型的Terraform变量中_Terraform_Terraform0.12+ - Fatal编程技术网

从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变量。