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

Terraform如何基于TFVARS数组生成带odd/even后缀的新数组?

Terraform自动生成带后缀的数组并调用模块

步骤1:定义原变量(接收TFVARS中的数组值)

先在variables.tf中定义对应变量,确保能读取TFVARS里的extproviders数组:

variable "extproviders" {
  type    = list(string)
  default = []
}

步骤2:自动生成带后缀的新数组

在main.tf里用locals结合for表达式和flatten函数,把原数组每个元素扩展为带_odd、_even后缀的新元素,再合并成一维数组:

locals {
  extproviders_new = flatten([
    for provider in var.extproviders : [
      "${provider}_odd",
      "${provider}_even"
    ]
  ])
}

执行后,local.extproviders_new会得到:["production_odd", "production_even", "support_odd", "support_even"]

步骤3:基于新数组调用模块

可以通过两种方式遍历新数组批量调用模块:

方式1:用for_each(推荐,资源命名更清晰)

module "ext_provider_instances" {
  source = "./path/to/your/module" # 替换为你的模块实际路径

  for_each = toset(local.extproviders_new)

  # 示例:给模块传入当前带后缀的名称参数
  provider_identifier = each.value
}

方式2:用count

module "ext_provider_instances" {
  source = "./path/to/your/module" # 替换为你的模块实际路径

  count = length(local.extproviders_new)

  # 示例:按索引取新数组元素传入模块
  provider_identifier = local.extproviders_new[count.index]
}

这样就能完全基于TFVARS里的原数组自动完成扩展和模块调用,不需要用户额外输入任何内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:40:43