terraform文件中本地参考地图

terraform文件中本地参考地图,terraform,Terraform,在tvfars文件中,我有以下内容: locals { common = { "my key" = "value" } } 因为我想在该文件的多个位置使用地图。我阅读了terraform文档中关于变量的内容,但找不到正确的语法。我尝试了以下方法(var1和var2都声明为映射): 与 var1 = "${local.common}" var2 = "${local.common}" 我明白了 variable "var1" should be type map

在tvfars文件中,我有以下内容:

locals {
    common = {
        "my key" = "value"
    }
}
因为我想在该文件的多个位置使用地图。我阅读了terraform文档中关于变量的内容,但找不到正确的语法。我尝试了以下方法(var1和var2都声明为映射):

  • var1 = "${local.common}"
    var2 = "${local.common}"
    
    我明白了

    variable "var1" should be type map, got string
    
    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
    
  • var1 = locals.common
    var2 = locals.common
    
    var1 = {"${local.common}"}
    var2 = {"${local.common}"}
    
    我明白了

    variable "var1" should be type map, got string
    
    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
    
  • var1 = locals.common
    var2 = locals.common
    
    var1 = {"${local.common}"}
    var2 = {"${local.common}"}
    
    失败时不会显示错误消息,但会打印terraform帮助和terraform退出

  • 如果我多次复制/粘贴地图,我验证了一切正常:

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

    有人知道正确的语法吗

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

    有关进一步讨论,请参阅

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

    例子: 变量.tf

    变量var1{
    type=“映射”
    }
    

    terraform.tfvars

    var1={
    “key1”=“value1”,
    “键2”=“值2”
    }
    

    module.tf


    这表明我不能在TFVAR中使用局部变量,但一旦修复了这一问题,map的语法就会出现一个缺失部分。你有没有可能把你的答案扩大到这一点?我认为您只需要标识tfvars文件的内容和将在其中声明映射的variables.tf。我怀疑这是否有效,因为var2也是一个映射,但您正在为其分配字符串。另外,在variable.tf中声明common并在tfvars中给它一个值,并将module.tf中的var1和var2定义为${var.common}会不会简单得多?@Oliver不确定“var2是映射…分配字符串”是什么意思?var1可以分配给var2。也就是说,一个映射变量可以分配给本地块中的另一个变量。如果你想要一个额外的
    通用的
    当然可以,但它更多地与个人偏好和风格有关。