ARM模板为现有VNet新增子网绑定NSG部署报错咨询
问题解决
直接报错原因
你在第一个子网(subnetname1)的properties配置中添加了"mode": "Incremental"字段,SubnetProperties的ARM架构中不存在该属性,直接删除这一行即可解决本次报错。
其他待修正的模板问题
删除无效字段后还需要修正以下问题,才能完成预期功能:
- VNet名称大小写不匹配:你硬编码了VNet的name为
vn-uks-production,但变量中定义的vnetName是vn-uks-Production,大小写不同会导致子网资源的dependsOn无法匹配到父资源,建议将VNet的name修改为引用变量:"name": "[variables('vnetName')]" - 依赖配置不全:当前VNet的
dependsOn仅包含第一个NSG,需要把另外两个NSG也加入依赖列表,避免NSG未创建完成就执行子网绑定操作 - 缺少第三个子网配置:你在参数中定义了第三个子网的相关参数,但在VNet的嵌套资源中仅配置了前两个子网,需要补全第三个子网的资源定义
- 现有VNet更新风险:如果你是给已存在的VNet新增子网,当前模板的VNet配置仅包含地址段,直接部署会覆盖VNet的现有配置(如已有子网、DNS设置等),需要把VNet的现有完整配置补充到模板的properties中,或改为使用独立的子网资源定义而非嵌套在VNet下
修正后的核心配置示例
修正后的子网1配置
{ "apiVersion": "2018-10-01", "type": "subnets", "name": "[parameters('subnetname1')]", "dependsOn": [ "[variables('vnetName')]" ], "properties": { "addressPrefix": "[parameters('subnetprefix1')]", "networkSecurityGroup": { "id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgsubnet1'))]" } } }
修正后的VNet依赖配置
"dependsOn": [ "[parameters('nsgsubnet1')]", "[parameters('nsgsubnet2')]", "[parameters('nsgsubnet3')]" ]
内容的提问来源于stack exchange,提问作者likwid786
相关产品推荐
相关产品推荐

