You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform的terraform.auto.tfvars中实现变量值拼接

Terraform中实现变量值拼接的正确方式

你在terraform.auto.tfvars里直接引用变量并做插值的写法行不通,因为.tfvars系列文件仅用于给变量提供静态字面量值,不支持表达式计算或变量引用。要实现你想要的拼接效果,有两种常用方法:

方法一:在变量定义中设置默认值

  1. 在根目录创建variables.tf文件,定义变量并利用默认值实现拼接:
variable "locations" {
  type = object({
    eastus = object({
      name = string
    })
  })
}

variable "resources_group" {
  type = object({
    prod = object({
      name = string
    })
  })
  # 在这里通过表达式动态生成默认值
  default = {
    prod = { name = "PROD-${var.locations.eastus.name}" }
  }
}
  1. 在terraform.auto.tfvars中仅提供locations的静态值:
locations = {
  eastus = { name = "eastus" }
}

Terraform会自动使用variables.tf中定义的默认逻辑,将PROD-与locations.eastus.name拼接后作为resources_group.prod.name的值。

方法二:使用本地值(Locals)处理动态计算

如果不需要将resources_group作为对外暴露的变量,仅在配置内部使用,可以用本地值实现:

在main.tf中定义本地值:

locals {
  locations = {
    eastus = { name = "eastus" }
  }

  resources_group = {
    prod = { name = "PROD-${local.locations.eastus.name}" }
  }
}

之后在资源配置中直接引用local.resources_group.prod.name即可,这种方式无需单独的.tfvars文件(若不需要外部配置)。

关键说明

  • .tfvars文件只能写静态键值对,不能包含${...}插值语法或变量引用,这些表达式仅能在.tf格式的配置文件(如variables.tf、main.tf)中使用。
  • 动态生成变量值时,优先在变量默认值或本地值中处理,不要试图在.tfvars里做计算。

内容的提问来源于stack exchange,提问作者Benj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:35:09