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

Terraform module是否支持配置多个source?

单个Terraform module是否支持配置多个source

结论:当前所有正式版本的Terraform均不支持为单个module块配置多个source。

  • 从语法定义看,module块的source参数为单值字符串类型,不支持传入列表、数组等多值格式,语法层面就不支持多源配置。
  • 从官方功能说明看,从未发布过单模块绑定多source的相关能力,你之前基于参数类型和官方文档做出的判断是准确的。

如果存在多源配置的实际使用需求,可以通过以下两种官方支持的方式实现,不需要依赖非官方的特殊能力:

  • 场景1:需要按环境/部署条件切换同一个逻辑模块的源地址
    可以通过条件表达式动态给source参数传入单个合法源地址,注意最终传入的值始终只能是一个源,不能同时传入多个。示例写法:
    module "biz_cluster" {
      source = var.deploy_env == "production" ? "git::ssh://git@internal.corp/infra/terraform-aws-eks-cluster.git?ref=v2.3.1" : "./modules/eks-cluster"
      # 其余模块入参保持正常配置即可
    }
    
  • 场景2:需要同时引用多个不同源的同类型模块
    可以定义多个独立的module块,每个块单独配置对应source,通过count或for_each按实际需要控制模块的启用状态,不要尝试在单个module块里塞多个源。示例写法:
    module "cluster_remote_prod" {
      count  = var.enable_prod_remote ? 1 : 0
      source = "git::ssh://git@internal.corp/infra/terraform-aws-eks-cluster.git?ref=v2.3.1"
      # 对应生产环境参数配置
    }
    
    module "cluster_local_dev" {
      count  = var.enable_dev_local ? 1 : 0
      source = "./modules/eks-cluster"
      # 对应开发环境参数配置
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:42:20