既成の仮想ネットワークを Azure スケール セット テンプレートで参照する

この記事では、基本のスケール セット テンプレートを変更して、新しい仮想ネットワークを作成するのではなく、既存の仮想ネットワークにデプロイする方法について説明します。

前提条件

前回の記事では、基本的なスケール セット テンプレートを作成しました。 その以前のテンプレートが必要になり、それを変更することで、スケール セットを既存の仮想ネットワークにデプロイするテンプレートを作成できます。

サブネットを識別する

まず、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": "2018-11-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": "2019-03-01",
-      "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 のドキュメントに従ってデプロイできます。

このチュートリアル シリーズは、基本スケール セット テンプレートの記事から開始できます。

基本スケール セット テンプレートを変更し、そのスケール セットを既存の仮想ネットワークにデプロイする方法を確認できます。

カスタム イメージを使用してスケール セットをデプロイするように基本スケール セット テンプレートを変更する方法を確認できます。

ゲストベースの自動スケーリングで Linux スケール セットをデプロイするように基本スケール セット テンプレートを変更する方法を確認できます。

スケール セットの詳細については、スケール セットの概要に関するページを参照してください。