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

Terraform Azure:多版本azurerm provider使用及版本冲突解决求助

AzureRM Provider版本约束冲突报错

报错信息

Could not retrieve the list of available versions for provider hashicorp/azurerm: no available releases match the given constraints ~> 3.0.2, ~> 3.30.0

问题背景

原本使用AzureRM Provider旧版本~> 3.0.2,因部署azurerm_private_dns_resolver需升级至新版本~> 3.30.0,编写Terraform代码后触发上述版本冲突报错,尝试将Provider拆分到模块中后问题依旧。

涉事代码

# Azure Provider source and version being used
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.30.0"
    }  
  }
  required_version = ">= 1.1.0"
}

# Configure the Microsoft Azure provider
provider "azurerm" {
  version = "~> 3.0.2"

  features {}
}

provider "azurerm" {
  alias   = "latest"
  version = "~> 3.30.0"

  features {}
}


module "az-resource-group" {
  source = "./modules/resource_group/"

  providers = {
    azurerm = azurerm.latest
  }

  az_rg_name     = "example-resources"
  az_rg_location = "Central US"
}

原因解析

Terraform会合并同一Provider的所有版本约束,这里required_providers指定了~>3.30.0(仅兼容3.30.x系列),同时默认Provider块指定~>3.0.2(仅兼容3.0.x系列),两个约束无交集,导致Terraform找不到符合条件的Provider版本,进而报错。

解决方法

方案1:统一升级至新版本(推荐)

若原有资源均可兼容3.30.x版本,直接移除旧版本Provider配置,统一使用新版本:

# Azure Provider source and version being used
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 3.30.0"
    }  
  }
  required_version = ">= 1.1.0"
}

# 仅保留新版本Provider
provider "azurerm" {
  version = "~> 3.30.0"

  features {}
}

module "az-resource-group" {
  source = "./modules/resource_group/"

  az_rg_name     = "example-resources"
  az_rg_location = "Central US"
}

方案2:保留双版本Provider(需调整约束范围)

若必须同时使用两个版本,需在required_providers中设置覆盖两个系列的版本范围,确保约束不冲突:

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      # 允许3.0.2到3.30.2之间的所有版本
      version = ">= 3.0.2, <= 3.30.2"
    }  
  }
  required_version = ">= 1.1.0"
}

provider "azurerm" {
  version = "~> 3.0.2"

  features {}
}

provider "azurerm" {
  alias   = "latest"
  version = "~> 3.30.0"

  features {}
}

module "az-resource-group" {
  source = "./modules/resource_group/"

  providers = {
    azurerm = azurerm.latest
  }

  az_rg_name     = "example-resources"
  az_rg_location = "Central US"
}

注意:双版本共存可能引发资源兼容性问题,建议优先采用方案1。

内容的提问来源于stack exchange,提问作者One Developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 15:30:54