在 Azure 规模集模板中添加对现有虚拟网络的引用

本文介绍了如何修改最小可行规模集模板,以便部署到现有虚拟网络而非创建新的虚拟网络。

更改模板定义

可以在此处查看最小可行规模集模板,可以在此处查看用于将规模集部署到现有虚拟网络的模板。 让我们逐一查看创建此模板 (git diff minimum-viable-scale-set existing-vnet) 时使用的差异内容:

首先,添加一个 subnetId 参数。 此字符串将传递到规模集配置,使得规模集能够识别要将虚拟机部署到的预先创建的子网。 此字符串必须采用以下格式:/subscriptions/<subscription-id>resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<virtual-network-name>/subnets/<subnet-name>。 例如,要将规模集部署到具有名称 myvnet、子网 mysubnet、资源组 myrg 和订阅 00000000-0000-0000-0000-000000000000 的现有虚拟网络,则 subnetId 将是:/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myrg/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/mysubnet

     },
     "adminPassword": {
       "type": "securestring"
+    },
+    "subnetId": {
+      "type": "string"
     }
   },

接下来,从 resources 阵列中删除虚拟网络资源,由于使用现有虚拟网络,因此不需要部署新的虚拟网络。

   "variables": {},
   "resources": [
-    {
-      "type": "Microsoft.Network/virtualNetworks",
-      "name": "myVnet",
-      "location": "[resourceGroup().location]",
-      "apiVersion": "2016-12-01",
-      "properties": {
-        "addressSpace": {
-          "addressPrefixes": [
-            "10.0.0.0/16"
-          ]
-        },
-        "subnets": [
-          {
-            "name": "mySubnet",
-            "properties": {
-              "addressPrefix": "10.0.0.0/16"
-            }
-          }
-        ]
-      }
-    },

虚拟网络在部署模板前已存在,因此不需要指定从规模集到虚拟网络的 dependsOn 子句。 删除以下行:

     {
       "type": "Microsoft.Compute/virtualMachineScaleSets",
       "name": "myScaleSet",
       "location": "[resourceGroup().location]",
       "apiVersion": "2016-04-30-preview",
-      "dependsOn": [
-        "Microsoft.Network/virtualNetworks/myVnet"
-      ],
       "sku": {
         "name": "Standard_A1",
         "capacity": 2

最后,传入用户设置的 subnetId 参数(而非使用 resourceId 获取同一部署中某个 vnet 的 ID,这是最小可行规模集模板执行的操作)。

                       "name": "myIpConfig",
                       "properties": {
                         "subnet": {
-                          "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', 'myVnet'), '/subnets/mySubnet')]"
+                          "id": "[parameters('subnetId')]"
                         }
                       }
                     }

后续步骤

可以按照 Azure Resource Manager 文档部署上述模板。

若要阅读这一系列的教程,可先阅读最小可行规模集模板文章

你可以了解如何修改最小可行规模集模板,以便将规模集部署到现有的虚拟网络

可以了解如何修改最小可行规模集模板,并使用自定义映像部署规模集

有关规模集的更多常规信息,请参阅规模集概述页