尝试更新vnet时,Azure ARM“代码”:“InUseSubnetCannotBeDeleted”

问题描述 投票:1回答:1

我有一个相当简单的ARM模板,我用它来创建vnet,子网和服务端点。当我尝试更改服务端点时,我收到错误“code”:“InUseSubnetCannotBeDeleted”。说明我的一个虚拟机正在使用其中一个子网。但是,我不想删除该子网。我只是想更新它,我可以通过门户网站或powershell做的操作就好了。是否需要更改一些开关以使ARM模板更新资源而不是从头开始创建它们?

模板。我将它剥离到最低限度。首先,我使用它来创建vnet和两个子网,部署一个VM,然后再次运行部署,我得到的子网无法删除:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vnetName": {
      "type": "string",
      "defaultValue": "VNet1",
      "metadata": {
        "description": "VNet name"
      }
    },
    "vnetAddressPrefix": {
      "type": "string",
      "defaultValue": "10.0.0.0/16",
      "metadata": {
        "description": "Address prefix"
      }
    },
    "subnets": {
      "type": "object"
    }
  },
  "variables": {
    "location": "[resourceGroup().location]",
    "subnetcount": "[length(parameters('subnets').settings)]"
  },
  "resources": [
    {
      "apiVersion": "2018-06-01",
      "type": "Microsoft.Network/virtualNetworks",
      "name": "[parameters('vnetName')]",
      "location": "[variables('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": ["[parameters('vnetAddressPrefix')]"]
        }
      },
      "resources": [
      ]
    },
    {
      "apiVersion": "2018-06-01",
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "name": "[concat(parameters('vnetName') , '/' , parameters('subnets').settings[copyIndex()].name)]",
      "location": "[variables('location')]",
      "copy": {
        "name": "subnetLoop",
        "count": "[variables('subnetcount')]"
      },
      "dependsOn": ["[parameters('vnetName')]"],
      "properties": {
        "addressPrefix": "[parameters('subnets').settings[copyIndex()].addressPrefix]"
      }
    }
  ]
}
azure azure-resource-manager arm-template
1个回答
2
投票

我怀疑问题是你从模板中遗漏了一些东西,现在它试图删除它。很难分辨这里到底有什么问题,但是如果你想要更新现有的子网,你需要确保vnet中存在的所有子网实际上都存在于模板中。如果某些子网被省略,它将尝试删除它们

© www.soinside.com 2019 - 2024. All rights reserved.