Terraform配置azurerm提示重复提供程序,设置alias后init仍报错如何解决?
报错说明
你遇到的是Terraform azurerm提供程序重复配置错误,参考报错截图:
完整报错如下:
DUPLICATE PROVIDER CONFIGURATION
A DEFAULT (NON-ALIASED) PROVIDER CONFIGURATION FOR AZURERM WAS ALREADY GIVEN AT MAIN.TF 12,1-19 . IF MULTIPLE CONFIGURATIONS ARE REQUIRED SET THE "ALIAS" ARGUMENT FOR ALTERNATIVE CONFIGURATION.
问题原因
- 同类型的Terraform提供程序默认(未设置
alias参数)的配置全局只能存在一个,你的main.tf文件中存在至少两个无alias的azurerm提供程序声明 - 即使你尝试添加了
alias参数,大概率存在语法错误、漏给额外配置加alias,或未删除冗余的默认配置,导致Terraform仍然识别到多个默认配置
解决方案
- 打开
main.tf文件,定位到第12行的azurerm提供程序块,全局搜索所有provider "azurerm"声明: - 如果你只需要操作单个Azure租户/订阅:删除多余的
provider "azurerm"块,仅保留一个即可,无需额外添加alias参数 - 如果你需要同时操作多个Azure租户/订阅:仅保留一个无
alias的默认azurerm配置,其余所有azurerm配置块都必须添加alias参数,配置示例如下:
# 全局唯一的默认azurerm配置,无需alias provider "azurerm" { features {} subscription_id = "默认订阅ID" } # 额外的azurerm配置,必须指定alias provider "azurerm" { alias = "secondary_sub" features {} subscription_id = "第二个订阅ID" }
- 使用带
alias的提供程序创建资源时,需要在资源块中显式指定对应提供程序,示例如下:
resource "azurerm_resource_group" "test_rg" { # 关联带alias的azurerm提供程序 provider = azurerm.secondary_sub name = "test-resource-group" location = "chinaeast2" }
- 保存配置修改后,重新执行
terraform init即可解决报错。
内容的提问来源于stack exchange,提问作者prashanth_apolloyon
相关产品推荐
相关产品推荐

