如何让非生产环境无需传入Terraform模块的list变量
解决Terraform非生产环境无需传入list变量的方案
核心思路
给模块x的list变量设置空映射默认值,让非生产环境调用时无需显式传入该变量,生产环境仍可正常传入实际业务值。
具体操作步骤
修改模块x的变量定义
编辑modules/x/variables.tf,为list变量添加默认空映射:variable "list" { type = map(object({ x = string })) default = {} # 新增默认值,非生产环境将自动使用这个空映射 }简化非生产环境的模块调用
在non-production/main.tf中,调用模块x时移除list参数:module "x" { source = "../modules/x" api_key = var.api_key token = var.token env = var.env }保留生产环境原有逻辑
生产环境的production/main.tf无需修改,继续保持传入list变量的逻辑即可正常运行。
逻辑验证
模块内原有的for_each逻辑var.env == "production" ? var.list : {}依然有效:
- 生产环境:传入实际的
list值,资源会基于该列表正常创建 - 非生产环境:使用默认的空映射
{},for_each为空时不会创建对应资源,符合非生产环境的需求
内容的提问来源于stack exchange,提问作者DisplayName
相关产品推荐
相关产品推荐

