在tvfars文件中,我有这个:
locals {
common = {
"my key" = "value"
}
}
因为我想在该文件的多个位置使用地图。我阅读了有关变量的terraform文档,但找不到正确的语法。我尝试了以下操作(var1和2都声明为映射):
使用
var1 = "${local.common}"
var2 = "${local.common}"
我知道
variable "var1" should be type map, got string
使用
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
使用
var1 = {"${local.common}"}
var2 = {"${local.common}"}
失败,没有错误消息,但是打印了terraform帮助并退出了terraform。
我验证了如果我多次复制/粘贴地图,一切都可以正常工作
var1 = {
"my key" = "value"
}
var2 = {
"my key" = "value"
}
有人知道正确的语法吗?
答案 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}"
}