代码之家  ›  专栏  ›  技术社区  ›  Kamsiinov

如何使用ARM模板将NSG应用到现有子网

  •  0
  • Kamsiinov  · 技术社区  · 7 年前

    我正在用ARM模板创建新的NSG,并在同一ARM模板上更新子网。我想能够得到子网addressprefix与“参考”,但这样做时,我总是得到循环依赖检测。有什么办法吗?我的子网arm模板部分如下所示:

          {
            "name": "[parameters('subnetName')]",
            "properties": {
              "addressPrefix": "[reference(resourceId(variables('ResourceGroupName'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName')), '2018-03-01').addressPrefix]",
              "networkSecurityGroup": {
                "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('NSGName'))]"
              }
            }
          },
    
    1 回复  |  直到 7 年前
        1
  •  4
  •   Thomas    7 年前

    以下是有关如何将NSG应用于现有子网的链接:

    Apply a NSG to an existing subnet

    Using linked and nested templates when deploying Azure resources )

    以下是使用嵌套模板执行相同操作的ARM模板:

    {
      "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
      "contentVersion": "1.0.0.1",
      "parameters": {
        "virtualNetworkName": {
          "type": "string",
          "metadata": {
            "description": "The name of the existing VNet"
          }
        },
        "subnetName": {
          "type": "string",
          "defaultValue": "default",
          "metadata": {
            "description": "The name of the existing subnet."
          }
        },
        "nsgName": {
          "type": "string",
          "metadata": {
            "description": "The name of the new nsg."
          }
        }
      },
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Network/networkSecurityGroups",
          "name": "[parameters('nsgName')]",
          "location": "[resourceGroup().location]",
          "apiVersion": "2018-03-01",
          "properties": {
    
          }
        },
        {
          "apiVersion": "2017-08-01",
          "name": "apply-nsg-to-subnet",
          "type": "Microsoft.Resources/deployments",
          "resourceGroup": "[resourceGroup().name]",
          "dependsOn": [
            "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgName'))]"
          ],
          "properties": {
            "mode": "Incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "resources": [
                {
                  "apiVersion": "2018-03-01",
                  "type": "Microsoft.Network/virtualNetworks/subnets",
                  "name": "[concat(parameters('virtualNetworkName'), '/', parameters('subnetName'))]",
                  "location": "[resourceGroup().location]",
                  "properties": {
                    "addressPrefix": "[reference(resourceId(resourceGroup().name, 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName')), '2018-03-01').addressPrefix]",
                    "networkSecurityGroup": {
                      "id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('nsgName'))]"
                    }
                  }
                }
              ]
            }
          }
        }
      ],
      "outputs": {}
    }