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

使用Bicep作为IaC工具处理外部基础设施变更的方案咨询

可行方案推荐

方案1:使用Bicep的@ignoreChanges注解(最优解)

这是最直接且无额外维护成本的方案,利用Bicep增量部署特性,明确告知部署引擎忽略虚拟网络的virtualNetworkPeerings属性差异。

在你的VNet资源定义中添加该注解:

@ignoreChanges('virtualNetworkPeerings')
resource vnet 'Microsoft.Network/virtualNetworks@2023-09-01' = {
  name: 'your-vnet-name'
  location: 'eastus'
  properties: {
    // 你的VNet基础配置(地址空间、子网等)
  }
}
  • 原理:增量部署模式下,Bicep会对比模板定义与实际资源状态,@ignoreChanges会让引擎跳过指定属性的校验,既不会删除已存在的对等连接,也不会强制模板中必须定义该属性。
  • 优势:无需额外工作流或状态文件,全新环境部署时完全不受影响(新VNet无对等连接,注解不会产生任何冲突)。

方案2:用Azure Policy保护对等连接(补充防护)

为进一步防止误删除,可创建一条Azure Policy,禁止删除虚拟网络对等连接资源:

  1. 定义Policy规则,针对Microsoft.Network/virtualNetworks/virtualNetworkPeerings类型资源,阻止Delete操作。
  2. 将Policy分配到包含目标VNet的订阅或资源组。

这个方案作为@ignoreChanges的补充,即使部署配置出现意外失误,Policy也会拦截删除动作,提供额外安全层。

方案3:基于外部参数的条件式跳过(备选)

如果需要偶尔通过IaC管理部分对等连接,但大部分仍保持外部维护,可通过参数控制是否加载对等连接配置:

param managePeerings bool = false

resource vnet 'Microsoft.Network/virtualNetworks@2023-09-01' = {
  name: 'your-vnet-name'
  location: 'eastus'
  properties: {
    addressSpace: {
      addressPrefixes: ['10.0.0.0/16']
    }
    // 仅当参数为true时才定义对等连接
    virtualNetworkPeerings: managePeerings ? [
      // 可选的对等连接定义
    ] : []
  }
}
  • 说明:日常部署时将managePeerings设为false,引擎会将virtualNetworkPeerings视为空数组,但增量模式下不会删除已存在的对等连接;若需通过IaC添加特定对等连接,临时将参数设为true即可。
  • 注意:需确保日常部署中参数值保持一致,避免误操作。

不推荐状态文件方案的原因

你提到的用JSON状态文件维护对等连接信息,需要额外工作流同步实际资源状态到文件,不仅增加维护复杂度,还可能出现文件与实际资源不同步的情况(比如用户手动添加对等连接但未更新文件),反而引入新风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:11:16