Terraform流水线创建Azure SQL Server时超时错误求助
问题:Terraform流水线创建Azure SQL Server超时,本地执行正常
本地执行terraform apply可成功创建Azure SQL Server资源,但通过流水线执行时始终触发超时错误,本地创建仅需不到2分钟,流水线等待30分钟后失败。
错误日志
module.sql.azurerm_mssql_server.sql_server: Still creating... [30m10s elapsed] 2023-06-08T07:59:30.903Z [ERROR] provider.terraform-provider-azurerm_v3.58.0_x5: Response contains error diagnostic: tf_rpc=ApplyResourceChange tf_req_id=741d1c06-f641-256b-eb93-421bb15a7eb5 diagnostic_detail= diagnostic_severity=ERROR diagnostic_summary="waiting for creation/update of Server: (Name \"a250621-ds-sql-server-eu2-dev\" / Resource Group \"eastus2-250621-datasquad\"): Code=\"OperationTimedOut\" Message=\"The operation timed out and automatically rolled back. Please retry the operation.\"" tf_proto_version=5.3 tf_provider_addr=provider @caller=github.com/hashicorp/terraform-plugin-go@v0.14.3/tfprotov5/internal/diag/diagnostics.go:55 @module=sdk.proto tf_resource_type=azurerm_mssql_server timestamp=2023-06-08T07:59:30.903Z 2023-06-08T07:59:30.903Z [ERROR] vertex "module.sql.azurerm_mssql_server.sql_server" error: waiting for creation/update of Server: (Name \"a250621-ds-sql-server-eu2-dev\" / Resource Group \"eastus2-250621-datasquad\"): Code=\"OperationTimedOut\" Message=\"The operation timed out and automatically rolled back. Please retry the operation.\" ╷ │ Error: waiting for creation/update of Server: (Name \"a250621-ds-sql-server-eu2-dev\" / Resource Group \"eastus2-250621-datasquad\"): Code=\"OperationTimedOut\" Message=\"The operation timed out and automatically rolled back. Please retry the operation.\" │ │ with module.sql.azurerm_mssql_server.sql_server, │ on ../modules/sql/main.tf line 8, in resource \"azurerm_mssql_server\" \"sql_server\": │ 8: resource \"azurerm_mssql_server\" \"sql_server\" {
当前环境
- Terraform版本:v1.2.2
- Azure Provider版本:3.58.0(已尝试升级至3.59.0,问题依旧)
排查建议
- 检查流水线代理网络连通性:流水线代理可能处于受限网络环境,无法稳定访问Azure SQL管理端点。确认代理能正常访问
*.database.windows.net及Azure Resource Manager相关服务地址,可通过telnet或curl测试连通性与延迟。 - 手动设置资源超时时间:在
azurerm_mssql_server资源块中延长超时配置,覆盖默认值以适配流水线环境的潜在延迟:
resource "azurerm_mssql_server" "sql_server" { # 原有配置项... timeouts { create = "60m" update = "60m" } }
- 验证流水线服务主体权限:确认流水线使用的服务主体拥有创建SQL Server的完整权限,排查是否存在订阅/资源组层面的策略限制或速率限制(本地身份无此限制)。
- 排查Azure区域负载:目标区域(eastus2)可能存在临时资源过载,尝试切换至同区域的不同可用区,或临时更换其他区域测试是否复现问题。
- 启用Terraform调试日志:在流水线中设置环境变量
TF_LOG=DEBUG,获取详细的请求/响应日志,定位是Azure服务端超时还是客户端与服务端的通信中断。
内容的提问来源于stack exchange,提问作者TinaZhang
相关产品推荐
相关产品推荐

