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

Terraform部署Azure Databricks时虚拟网络未找到及操作取消问题

Azure Databricks Terraform部署错误:虚拟网络未找到/操作被取消

错误根因

1. ResourceNotFound(虚拟网络未找到)

  • 核心问题是资源创建顺序错误:Terraform默认并行创建无依赖的资源,Databricks工作区会在虚拟网络完成部署前发起关联请求,导致Azure端找不到目标虚拟网络。
  • 额外可能:Provider中配置的resource_group与虚拟网络所在资源组不匹配,导致Terraform在错误的资源组下查找虚拟网络。

2. Operation was canceled(虚拟网络操作被子网取消)

  • 这是子网与虚拟网络并发创建的冲突:未声明依赖时,Terraform同时触发虚拟网络和子网的创建请求。Azure要求子网必须依附已存在的虚拟网络,当子网请求先到达时,会触发虚拟网络创建,但后续虚拟网络的独立创建请求会被子网的关联操作覆盖,导致原创建任务被取消。

错误复现

  1. 编写未声明依赖的Terraform代码(示例如下):
    resource "azurerm_resource_group" "example" {
      name     = "example-rg"
      location = "eastus"
    }
    
    resource "azurerm_virtual_network" "example" {
      name                = "example-vnet"
      address_space       = ["10.0.0.0/16"]
      location            = azurerm_resource_group.example.location
      resource_group_name = azurerm_resource_group.example.name
    }
    
    resource "azurerm_subnet" "databricks" {
      name                 = "databricks-subnet"
      resource_group_name  = azurerm_resource_group.example.name
      virtual_network_name = azurerm_virtual_network.example.name
      address_prefixes     = ["10.0.1.0/24"]
    }
    
    resource "azurerm_databricks_workspace" "example" {
      name                = "example-databricks"
      location            = azurerm_resource_group.example.location
      resource_group_name = azurerm_resource_group.example.name
      sku                 = "Premium"
    
      custom_virtual_network_id = azurerm_virtual_network.example.id
      public_subnet_name        = azurerm_subnet.databricks.name
      private_subnet_name       = azurerm_subnet.databricks.name
    }
    
  2. 执行terraform init && terraform apply,首次运行会触发ResourceNotFound,因为Databricks工作区先尝试关联未创建的虚拟网络。
  3. 移除Provider中的resource_group配置后再次执行terraform apply,会触发Operation was canceled错误,因为子网与虚拟网络的创建请求并发导致冲突。

修复方案

  • 显式声明资源依赖:通过depends_on强制指定创建顺序,确保虚拟网络先于子网创建,子网先于Databricks工作区创建:
    resource "azurerm_subnet" "databricks" {
       name                 = "databricks-subnet"
       resource_group_name  = azurerm_resource_group.example.name
       virtual_network_name = azurerm_virtual_network.example.name
       address_prefixes     = ["10.0.1.0/24"]
       depends_on           = [azurerm_virtual_network.example]
    }
    
    resource "azurerm_databricks_workspace" "example" {
       name                = "example-databricks"
       location            = azurerm_resource_group.example.location
       resource_group_name = azurerm_resource_group.example.name
       sku                 = "Premium"
    
       custom_virtual_network_id = azurerm_virtual_network.example.id
       public_subnet_name        = azurerm_subnet.databricks.name
       private_subnet_name       = azurerm_subnet.databricks.name
       depends_on                = [azurerm_subnet.databricks, azurerm_virtual_network.example]
    }
    
  • 统一资源组配置:确保Provider中指定的resource_group与所有资源的resource_group_name一致,避免跨资源组查找错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:15:35