terraform文件中的本地人参考地图

时间:2018-08-03 12:56:22

标签: terraform

在tvfars文件中,我有这个:

locals {
    common = {
        "my key" = "value"
    }
}

因为我想在该文件的多个位置使用地图。我阅读了有关变量的terraform文档,但找不到正确的语法。我尝试了以下操作(var1和2都声明为映射):

  1. 使用

    var1 = "${local.common}"
    var2 = "${local.common}"
    

    我知道

    variable "var1" should be type map, got string
    
  2. 使用

    var1 = locals.common
    var2 = locals.common
    

    我知道

    invalid value "myfile.auto.tfvars" for flag -var-file-default: Error parsing myfile.auto.tfvars: At 18:15: Unknown token: 18:15 IDENT locals.common
    
  3. 使用

    var1 = {"${local.common}"}
    var2 = {"${local.common}"}
    

    失败,没有错误消息,但是打印了terraform帮助并退出了terraform。

我验证了如果我多次复制/粘贴地图,一切都可以正常工作

var1 = {
     "my key" = "value"
}
var2 = {
     "my key" = "value"
}

有人知道正确的语法吗?

1 个答案:

答案 0 :(得分:0)

local块,插值和非常量表达式不能在terraform.tfvars文件中使用。

有关进一步的讨论,请参见github-issue

解决方法是仅在terraform.tfvars中定义一次变量,并使重复变量在terraform模块文件中本地化。

示例:

variable.tf

variable var1 { type = "map" }

terraform.tfvars

var1= { "key1" = "value1", "key2" = "value2" }

module.tf

 locals {  
    var2="${var.var1}"  
 }  

 output show_var2 {
    value = "${local.var2}"
 }