You need to enable JavaScript to run this app. Terraform无配置变更执行apply时误删Azure资源原因咨询
优惠活动
大模型
产品
解决方案
定价
更多

Terraform无配置变更执行apply时误删Azure资源原因咨询

问题根因及解决方案

核心原因

  • AzureRM Provider存在明确的使用限制:azurerm_virtual_network 资源内嵌的subnet配置块,与独立的azurerm_subnet资源完全互斥,禁止混合使用。Provider会将VNet内嵌的subnet块作为该VNet下子网的唯一期望状态,所有未出现在内嵌块中的子网,即便单独定义了azurerm_subnet资源,都会被判定为非预期资源执行删除操作。
  • 本次操作的触发逻辑:修改NSG后执行terraform apply时,触发了全量资源的状态比对校验,Provider检测到当前VNet下关联的3个业务子网、1个Bastion子网均未在VNet内嵌的subnet块中声明,因此直接删除了所有非预期子网,仅保留了内嵌定义的GatewaySubnet,该结果与此前执行的taint操作无直接关联。
  • 额外风险点:若两次apply之间var.subnetcount变量值发生变更,也会导致基于count索引创建的子网、NSG资源出现偏移,触发批量删除/重建,但该问题并非本次故障的主因。

修复方案

  • 推荐方案:删除azurerm_virtual_network资源中所有内嵌的subnet块,包括GatewaySubnet,所有子网统一使用独立的azurerm_subnet资源定义。该方式灵活性更高,支持单独配置每个子网的关联规则、属性变更,符合AzureRM Provider的官方最佳实践。
  • 备选方案:若需保留VNet内嵌subnet块的写法,需将所有子网(3个业务子网、Bastion子网、GatewaySubnet)全部定义在VNet的subnet块中,完全弃用独立的azurerm_subnet资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 03:24:00