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

Terraform创建Azure订阅时执行plan命令无限挂起问题

解决Terraform创建Azure EA订阅时terraform plan无限挂起的问题

针对Terraform 1.5.1 + Azurerm Provider创建EA订阅时plan进程挂死的情况,可按以下方向排查解决:

1. 验证权限与EA门户配置

创建EA订阅需要特定权限,否则可能导致API调用无响应:

  • 确保执行操作的账号拥有Enrollment Account Owner权限,或组合权限:EA Reader + Subscription Creator(需在EA门户配置)。
  • 登录EA门户,确认已开启Allow subscription creation选项(在Enrollment Account的设置中)。
  • 用Azure CLI手动测试创建订阅,验证权限和EA配置是否正常:
    az account create --enrollment-account-id <你的EA账号ID> --name <测试订阅名> --offer-type MS-AZR-0017P
    

2. 修复Provider版本兼容性问题

Terraform 1.5.1与旧版Azurerm Provider可能存在交互bug,导致请求死锁:

  • 在Terraform配置中指定兼容的稳定版Provider(如3.70.x系列,与Terraform 1.5.1兼容):
    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 3.70.0"
        }
      }
      required_version = ">= 1.5.1"
    }
    
  • 执行升级初始化:
    terraform init -upgrade
    

3. 排查网络与API访问问题

企业内网的防火墙/代理可能阻断Terraform与Azure管理API的通信:

  • 设置代理环境变量(如果需要):
    export HTTP_PROXY=http://your-proxy:port
    export HTTPS_PROXY=http://your-proxy:port
    
  • 启用Terraform调试日志,定位挂死的请求节点:
    TF_LOG=DEBUG terraform plan > plan_debug.log
    
    查看日志最后出现的API调用,判断是否卡在Subscriptions_Create或EnrollmentAccounts_Get等请求上,进而确认是网络阻塞还是API端无响应。

4. 检查配置参数正确性

错误的配置参数可能导致请求异常挂起:

  • 确认azurerm_subscription资源的enrollment_account_id正确,可通过以下命令获取:
    az billing enrollment-account list --query "[].id"
    
  • 确保offer_type为EA订阅专用的MS-AZR-0017P(不要误用Pay-As-You-Go的MS-AZR-0003P)。正确配置示例:
    resource "azurerm_subscription" "ea_sub" {
      subscription_name     = "My-EA-Production-Sub"
      enrollment_account_id = "/providers/Microsoft.Billing/enrollmentAccounts/xxxx-xxxx-xxxx-xxxx"
      offer_type            = "MS-AZR-0017P"
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:21:59