如何通过Terraform Azure Provider配置连接Azure中国区环境
Terraform连接Azure中国区的正确配置方法
直接在Provider块配置
指定Azure中国区的核心是在azurerm provider块中正确设置environment = "china",同时配合对应的认证参数(服务主体或Azure CLI认证均可)。
服务主体认证示例
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.0.0" # 务必使用支持中国区的新版provider } } } provider "azurerm" { environment = "china" # 替换为你的中国区服务主体信息 client_id = var.client_id client_secret = var.client_secret tenant_id = var.tenant_id subscription_id = var.subscription_id }
Azure CLI认证示例
如果已经通过CLI登录中国区,可省略硬编码的认证参数:
# 先配置并登录Azure中国区CLI az cloud set -n AzureChinaCloud az login
对应的Terraform配置:
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.0.0" } } } provider "azurerm" { environment = "china" # 自动读取CLI的认证上下文 }
使用环境变量配置
通过设置ARM_ENVIRONMENT环境变量,无需在provider块中显式声明environment参数:
- Windows(CMD):
set ARM_ENVIRONMENT=china - Linux/macOS(Bash/Zsh):
export ARM_ENVIRONMENT=china
常见报错排查
- provider版本过低:旧版azurerm provider可能不支持
environment参数,升级到>=3.0.0版本即可解决。 - 参数拼写错误:
environment的取值必须严格为china,不能写成cn或其他变体。 - 认证信息不匹配:确保使用的
tenant_id、subscription_id是Azure中国区的资源,而非全球区的。
内容的提问来源于stack exchange,提问作者Sudhir Goswami
相关产品推荐
相关产品推荐

