批量移除重建跨订阅VNET对等连接,AZ CLI/ARM Template/PowerShell选哪种最优?
最优方案选型&实现建议
最终选型推荐:AZ CLI + 独立配置文件
这是最匹配你需求的方案,核心原因如下:
- 可移植性拉满:Windows、macOS、Linux全平台兼容,只要装了AZ CLI就能跑,没有额外依赖,换环境不需要调整脚本逻辑
- 跨订阅操作成本极低:切换订阅只需要一行
az account set命令,权限配置简单 - 流程适配性好:你需要先删旧对等、再建新对等的两步式操作,用AZ CLI的命令式逻辑写起来非常直接,不需要处理声明式模板的状态同步问题
- 易维护:把24条对等的所有参数都抽成单独的JSON/CSV配置文件,后续要修改对等参数、增减对等数量,直接改配置就行,不用动脚本本身,完全满足可移植要求
另外两个选项的劣势
- ARM Template:本身是声明式部署工具,更适合新建稳定的资源栈,你要先删除存量对等的需求用ARM实现非常别扭:要么单独写删除脚本,要么开完整部署模式,风险极高容易误删VNET下的其他资源,而且跨订阅的ARM部署还要额外配置多订阅的部署权限,流程繁琐很多
- PowerShell:功能上能实现需求,但可移植性远不如AZ CLI,跨平台需要额外安装对应版本的Az模块,不同版本的Az模块还容易出现命令兼容问题,对运行环境的要求高很多
核心实现逻辑参考
你可以按这个结构搭脚本,后续复用性很高:
- 先把24条对等连接的所有配置整理成独立的JSON文件,示例结构:
{ "peeringList": [ { "srcSubId": "PRD订阅ID", "srcRgName": "PRD-VNET所在资源组", "srcVnetName": "PRD-VNET", "peeringName": "PRD-to-PEER-VNET-01", "remoteVnetId": "/subscriptions/对端订阅ID/resourceGroups/对端资源组/providers/Microsoft.Network/virtualNetworks/对端VNET名", "allowForwardedTraffic": true, "allowGatewayTransit": false, "useRemoteGateways": false }, // 剩下23条对等按同样格式填写,包含DEV环境的12条 ] }
- 脚本核心执行步骤:
- 先登录Azure:
az login - 遍历配置文件里的所有对等规则,先删除存量对等:
az network vnet peering delete --subscription ${srcSubId} -g ${srcRgName} --vnet-name ${srcVnetName} -n ${peeringName} - 所有旧对等删除完成后,再遍历配置新建对等:
az network vnet peering create --subscription ${srcSubId} -g ${srcRgName} --vnet-name ${srcVnetName} -n ${peeringName} --remote-vnet ${remoteVnetId} --allow-forwarded-traffic ${allowForwardedTraffic} --allow-gateway-transit ${allowGatewayTransit} --use-remote-gateways ${useRemoteGateways}
注意:双向对等需要配置正反两条规则,也就是VNET A到VNET B、VNET B到VNET A各一条,刚好对应你24条的总数量
跑脚本之前可以在删除和创建命令后加--what-if参数预览执行结果,确认没有问题再正式执行,避免影响业务。
内容的提问来源于stack exchange,提问作者Jeff Christman
相关产品推荐
相关产品推荐

