使用 ARM 模板将 NSG 附加到现有子网

使用 ARM 模板将 NSG 附加到现有子网

我想创建一个网络安全组 (NSG)在 Azure 中并将其附加到现有子网使用 ARM 模板。我已经看过这个网站了:https://github.com/Azure/azure-quickstart-templates/tree/master/201-nsg-add-to-existing-subnet但模板引用了 GitHub 上的其他文件,而我的客户不允许。

理想情况下,如果可能的话,我希望避免使用嵌套的 ARM 模板,而只使用 x1 template.json 和 x1 parameters.json 文件或者只使用 x1 template.json 文件。

如果有人有这方面的经验或者知道一个好的网站可以参考,我将非常感激您的帮助。

答案1

该示例以嵌套模板的形式执行此操作,因为虚拟网络所在的资源组与虚拟网络本身位于不同的资源组中。如果您的 NSG 和 vNet 位于同一资源组中,则无需这样做。您需要做的就是将子网部分添加到主模板中,并依赖于您的 NSG。

{
      "apiVersion": "2018-03-01",
      "type": "Microsoft.Network/virtualNetworks/subnets",
      "dependsOn": [
        "new-nsg"
      ],
      "name": "[concat(parameters('virtualNetworkName'), '/', parameters('subnetName'))]",
      "location": "[resourceGroup().location]",
      "properties": {
        "addressPrefix": "[parameters('subnetAddressPrefix')]",
        "networkSecurityGroup": {
          "id": "[resourceId('Microsoft.Network/networkSecurityGroups', 'new-nsg')]"
        }
      }
    }

如果您的 NSG 和 vNet 位于不同的资源组中,那么唯一的方法是使用嵌套模板。与 Terraform 之类的工具相比,这是 ARM 的缺点之一。话虽如此,您仍然可以考虑以下几个选项:

  1. 您可以使用内联嵌套模板。这些模板有点受限,但不需要您引用外部文件
  2. 您可以将其作为两个单独的部署来运行,并在两者之间传递 NSG 资源组

相关内容