代码之家  ›  专栏  ›  技术社区  ›  phydeauxman

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

  •  0
  • phydeauxman  · 技术社区  · 6 年前

    我在 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_acct 命令行中此变量的属性。我尝试了以下方法,但不起作用:

    terraform apply -var "linux_jb_0={"adm_acct":$account","vm_size":"Standard_A1"}"
    

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

    0 回复  |  直到 6 年前
        1
  •  6
  •   Ben Whaley    4 年前

    此语法适用于Terraform v1.0.0:

    terraform apply -var "linux_jb_0={\"adm_acct\"=\"$account\",\"vm_size\"=\"Standard_A1\"}"
    

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

        2
  •  0
  •   marcincuber    6 年前

    更新答案:

    以下操作应在变量周围使用转义双引号:

    terraform apply -var="linux_jb_0={"adm_acct":"\"${account}\"","vm_size":"Standard_A1"}"
    
        3
  •  0
  •   Martin Zeitler    4 年前

    快跑吧 terraform plan & terraform apply 没有 -var 并制作shell脚本 export 任何环境变量 terraform 可能需要;例如 export ADM_ACCT=somevalue 。然后可以再次使用 ${var.ADM_ACCT}' 。。。如果需要,一些助手脚本可以准备要解析的脚本(例如从JSON输入),因为这些导出总是为运行它们的shell设置的,可能不是同一个shell。

        4
  •  0
  •   Philippe Carpentier    4 年前

    我知道这是一个很长的问题,但我已经在windows上为object使用了以下输入,并且它工作正常。 我们永远不知道它是否能帮助其他人:

    terraform plan -var 'environment_ids={application="""my_app""", scope="""my_scope""", region="""my_region"""}'
    
    推荐文章