Azure

使用 ARM 模板將 NSG 附加到現有子網

  • December 15, 2019

我希望在 Azure 中創建一個網路安全組 (NSG) ,並使用 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 文件。

如果有人有這方面的經驗或知道可以參考的好網站,我將不勝感激。

該範例作為嵌套模板執行此操作,因為虛擬網路所在的資源組與虛擬網路自身位於不同的資源組中。如果您的 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 資源組

引用自:https://serverfault.com/questions/995511