我正在开发Azure资源管理器模板,目前我使用NSG和UDR为NSG,路由表和子网开发了ARM模板。
我编写了以下代码行,用于将子网以及NSG和UDR添加到现有虚拟网络中。
"resources": [{
"apiVersion": "2017-10-01",
"type": "Microsoft.Network/virtualNetworks/subnets",
"copy": {
"name": "subnetCopy",
"mode": "serial",
"count": "[length(parameters('subnetNames'))]"
},
"name": "[ concat( parameters('existingVNETName'), '/', parameters('subnetNames')[copyIndex()] ) ]",
"location": "[resourceGroup().location]",
"properties": {
"addressPrefix": "[parameters('subnetAddresses')[copyIndex()]]",
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('subnetNSGs')[copyIndex()])]"
},
"routeTable": {
"id": "[resourceId('Microsoft.Network/routeTables', parameters('subnetUDRs')[copyIndex()])]"
}
}
}]
仅当虚拟网络NSG和UDR位于同一资源组中时,上述代码才有效。但每当我将上述代码部署到不同的资源组时,我就会收到“此资源组中找不到虚拟网络资源”这样的错误。实际上,虚拟网络位于其他资源组中,位置相同。
有人可以根据我的上述要求建议我如何修改上述代码吗?
答案 0 :(得分:1)
模板部署具有resourceGroup范围 - 因此您必须将该模板部署到参数('existingVNETName')所在的同一resourceGroup。您还需要部署到现有vnet所在的同一位置,它可能不在[resourceGroup()。location] ...
中要检查几件事。