Terraform init报错:尝试安装不存在的hashicorp/azuredevops Provider
问题场景
使用关联Azure的Terraform模块时,执行terraform init触发报错:系统尝试安装不存在的hashicorp/azuredevops Provider,该Provider实际由微软维护,对应官方标识为microsoft/azuredevops。通过terraform providers命令排查,确认是wif_devops模块(代码存储于Azure Repo)依赖该Provider。已在根模块添加明确指定microsoft/azuredevops的provider块,但问题仍未解决。
完整错误信息
Initializing the backend...
Initializing modules...Initializing provider plugins...
- Finding hashicorp/azuread versions matching "2.53.1"...
- Finding hashicorp/random versions matching "3.6.2"...
- Finding microsoft/azuredevops versions matching "1.2.0"...
- Finding latest version of hashicorp/azuredevops...
- Finding hashicorp/azurerm versions matching "3.113.0"...
- Installing hashicorp/azuread v2.53.1...
- Installed hashicorp/azuread v2.53.1 (signed by HashiCorp)
- Installing hashicorp/random v3.6.2...
- Installed hashicorp/random v3.6.2 (signed by HashiCorp)
- Installing microsoft/azuredevops v1.2.0...
- Installed microsoft/azuredevops v1.2.0 (signed by a HashiCorp partner, key ID 6F0B91BDE98478CF)
- Installing hashicorp/azurerm v3.113.0...
- Installed hashicorp/azurerm v3.113.0 (signed by HashiCorp)
Partner and community providers are signed by their developers.
If you'd like to know more about provider signing, you can read about it here:
https://www.terraform.io/docs/cli/plugins/signing.html
╷
│ Error: Failed to query available provider packages
│
│ Could not retrieve the list of available versions for provider hashicorp/azuredevops: provider registry registry.terraform.io does not have a provider named
│ registry.terraform.io/hashicorp/azuredevops
│
│ Did you intend to use microsoft/azuredevops? If so, you must specify that source address in each module which requires that provider. To see which modules are
│ currently depending on hashicorp/azuredevops, run the following command:
│ terraform providers
解决步骤
根模块配置Provider全局映射
在根模块的terraform块中添加required_providers,将hashicorp/azuredevops的请求映射到microsoft/azuredevops,强制所有子模块使用正确的Provider源:terraform { required_providers { azuredevops = { source = "microsoft/azuredevops" version = "1.2.0" # 匹配你的版本需求 } # 保留其他必填Provider的配置 } } provider "azuredevops" { # 填入你的Azure DevOps配置参数,如org_service_url等 }修正子模块的Provider依赖
若wif_devops模块内部显式指定了hashicorp/azuredevops,需修改该模块的terraform块,将Provider源改为microsoft/azuredevops:# wif_devops模块内的terraform配置块 terraform { required_providers { azuredevops = { source = "microsoft/azuredevops" version = "1.2.0" } } }清理缓存并重新初始化
执行以下命令清除旧缓存,重新加载配置:rm -rf .terraform .terraform.lock.hcl terraform init
内容的提问来源于stack exchange,提问作者Melean

