Terraform网络模块无法继承Azurerm Provider问题求助
检查network模块的基础配置
确认network模块下的.tf文件没有语法错误,比如是否误拼写了Provider名称(把azurerm写成其他字符串);同时核对主模块中调用network模块的路径是否正确,避免因路径拼写错误导致模块无法加载主配置。排查主模块的Provider配置限制
如果主模块的Azurerm Provider配置中使用了count或for_each参数,即使是默认未别名的Provider,子模块也无法自动继承——带循环属性的Provider无法被默认传递。另外要确保Azurerm Provider配置是全局声明的,没有嵌套在其他资源或模块块内部。核对Terraform与Provider版本兼容性
不同Terraform版本对模块Provider继承的规则有差异,比如版本低于0.13的Terraform,模块Provider继承逻辑和新版本不兼容,需确保使用的Terraform版本和官方文档对应;同时检查主模块与network模块中Azurerm Provider的版本是否一致,避免版本冲突导致资源无法识别。检查network模块的
required_providers声明
如果network模块自行定义了required_providers但未正确声明azurerm,会导致Terraform无法关联主模块的默认配置。需在network模块的providers.tf中添加如下声明:terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.0.0" } } }这样Terraform会自动继承主模块的默认Provider配置。
重新初始化Terraform
缓存异常也可能导致该问题,执行terraform init -upgrade命令重新拉取Provider和模块,清除旧缓存状态后再尝试操作。
内容的提问来源于stack exchange,提问作者Vincenzo

