Terraform根模块与子模块Provider配置困惑求助
解决Terraform子模块复用自定义Runscope Provider的问题
核心问题原因
子模块默认会尝试拉取官方hashicorp/runscope Provider,但你使用的是自行构建的自定义版本sport24ru/runscope,必须让子模块明确知晓该Provider的源信息,才能复用根模块的配置。
具体解决方案
给子模块添加Provider源声明
在子模块的主配置文件(如submodule/main.tf)中,添加required_providers块,与根模块的配置保持完全一致:terraform { required_providers { runscope = { source = "sport24ru/runscope" version = "0.10.0" } } }这一步是关键,用于告诉子模块使用你自定义的Provider源,而非默认的官方源。
删除子模块中的独立Provider块
确保子模块内没有单独定义provider "runscope"块,否则会覆盖根模块的配置,导致无法复用。重新初始化Terraform
执行以下命令刷新配置,确保Terraform加载正确的Provider信息:terraform init -upgrade(可选)显式关联根模块Provider实例
如果上述步骤仍未解决问题,可在根模块的module块中显式指定Provider关联,强制子模块使用根模块的Provider配置:module "your_runscope_submodule" { source = "./path/to/your/submodule" providers = { runscope = runscope } }
额外检查项
- 确认本地自定义Provider的存储路径正确,M2芯片的Terraform本地Provider路径为:
~/.terraform.d/plugins/registry.terraform.io/sport24ru/runscope/0.10.0/darwin_arm64/terraform-provider-runscope_v0.10.0
确保该文件存在且权限正常。
内容的提问来源于stack exchange,提问作者Sean
相关产品推荐
相关产品推荐

