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调试日志,定位挂死的请求节点:
查看日志最后出现的API调用,判断是否卡在TF_LOG=DEBUG terraform plan > plan_debug.logSubscriptions_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
相关产品推荐
相关产品推荐

