局部变量不在Terraform中的变量内工作

局部变量不在Terraform中的变量内工作,terraform,Terraform,无法重新使用.tf文件中声明的变量 我需要什么?: 我需要通过在其中注入现有变量来声明变量将变量转换为局部变量,以便它可以使用其他局部变量是正确的解决方案。使用terraform 0.12.x,以下工作如terraform应用程序所示 本地人{ 酷炫风格={ 调色板=“酷” type=“固体” 宽度=“正常” } 橙色_样式={ 调色板=“橙色” type=“固体” 宽度=“正常” } 查询\u时间序列=[ { q=“平均值:xx.xxxx{xxx:xx}” type=“钢筋” style=l

无法重新使用.tf文件中声明的变量

我需要什么?:


我需要通过在其中注入现有变量来声明变量

变量
转换为
局部变量
,以便它可以使用其他局部变量是正确的解决方案。使用terraform 0.12.x,以下工作如
terraform应用程序所示

本地人{
酷炫风格={
调色板=“酷”
type=“固体”
宽度=“正常”
}
橙色_样式={
调色板=“橙色”
type=“固体”
宽度=“正常”
}
查询\u时间序列=[
{
q=“平均值:xx.xxxx{xxx:xx}”
type=“钢筋”
style=local.cool\u style
},
{
q=“平均值:xx.xxxx{xxx:xx}”
type=“钢筋”
style=local.orange\u style
}
]
}
输出“查询\u时间序列”{
value=local.query\u timeseries
}
$terraforminit
$terraform适用
申请完成!资源:添加0个,更改0个,销毁0个。
产出:
查询\u时间序列=[
{
“q”=“平均值:xx.xxxx{xxx:xx}”
“风格”={
“调色板”=“酷”
“类型”=“实体”
“宽度”=“正常”
}
“类型”=“条”
},
{
“q”=“平均值:xx.xxxx{xxx:xx}”
“风格”={
“调色板”=“橙色”
“类型”=“实体”
“宽度”=“正常”
}
“类型”=“条”
},
]

您使用它们的方式不对。变量不能包含插值,所以如果需要插值,那么它们应该是局部变量。在您的例子中,如果
cool_样式
orange_样式
是不可配置的(因此代码调用方不能更改),那么它应该都是局部变量。我使用了locals.cool_样式,结果是sameNo。关键是您的
query\u timeseries
应该是本地的。目前,它是一个变量,但变量不能包含插值,因为错误消息告诉你;顺便说一句,它不允许我将
query\u timeseries
声明为本地人。是否有必要声明
cool\u style
&
orange\u style
并将其作为variables.tf中的变量重新使用?这听起来像是一个单独的问题。
locals {
  cool_style = {
    palette = "cool"
    type    = "solid"
    width   = "normal"
  }
  orange_style = {
    palette = "orange"
    type    = "solid"
    width   = "normal"
  }
}

variable "query_timeseries" {
  default = [
    {
      q     = "avg:xx.xxxx{xxx:xx}"
      type  = "bars"
      style = local.cool_style
    },
    {
      q     = "avg:xx.xxxx{xxx:xx}"
      type  = "bars"
      style = local.orange_style
    }
}