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
相关产品推荐
相关产品推荐

