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

Terraform无需重建资源为指定Azure子网配置subnet delegation的方法

实现方案

这个方案完全不需要修改你现有的subnets变量定义、tfvars子网配置,只会新增少量代码,所有已有子网不会触发删除重建,仅对指定子网做原地更新添加delegation。

步骤1:新增子网delegation配置变量

在变量文件中新增如下变量,用来存储需要配置delegation的子网对应规则:

variable "subnet_delegations" {
  type = map(list(object({
    name         = string
    service_name = string
    actions      = optional(list(string), ["Microsoft.Network/virtualNetworks/subnets/join/action"])
  })))
  default = {}
  description = "指定子网需要配置的service delegation规则,key为子网名称,value为对应的delegation配置列表"
}

步骤2:在tfvars文件中添加指定子网的delegation配置

根据你的需求配置mlops-aue-snt-db1、mlops-aue-snt-db2的delegation规则,示例如下(可根据实际需要修改service_name和actions):

subnet_delegations = {
  "mlops-aue-snt-db1" = [
    {
      name         = "sqlManagedInstanceDelegation"
      service_name = "Microsoft.Sql/managedInstances"
    }
  ]
  "mlops-aue-snt-db2" = [
    {
      name         = "postgresqlFlexibleDelegation"
      service_name = "Microsoft.DBforPostgreSQL/flexibleServers"
    }
  ]
  # 后续要给其他子网加delegation直接在这里加就行,不需要改其他代码
}

步骤3:修改现有azurerm_subnet资源,添加dynamic delegation块

在你现有子网资源代码中添加dynamic块即可,其他原有属性完全不动:

resource "azurerm_subnet" "azr_subnet" {
  for_each = var.subnets

  name                 = each.key
  resource_group_name  = azurerm_resource_group.rg.name
  virtual_network_name = azurerm_virtual_network.vnet.name
  address_prefixes     = each.value
  enforce_private_link_endpoint_network_policies = true

  # 新增的dynamic delegation块
  dynamic "delegation" {
    # 只有当前子网在subnet_delegations里有配置时才会生成对应的delegation块
    for_each = lookup(var.subnet_delegations, each.key, [])
    content {
      name = delegation.value.name
      service_delegation {
        name    = delegation.value.service_name
        actions = delegation.value.actions
      }
    }
  }
}

验证修改

配置完成后执行terraform plan,确认输出的变更只有对需要添加delegation的子网的Update操作,没有任何Destroy/Create操作,确认无误后执行terraform apply即可完成配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:00:00