0

わかりました、ARM テンプレート ( https://azure.microsoft.com/en-us/documentation/articles/web-sites-integrate-with-vnet ) を使用して、ここで説明したことをすべて実行しました。ただし、1 つ例外があります。既存の VNET との VNET 統合を有効にすることです。

これは ARM テンプレートで実行できますか? ありがとう!

4

1 に答える 1

5

参考になるテンプレートの例を次に示します。GitHubのこのクイックスタート サンプルから変更されています

{
   "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
      "hostingPlanName": {
         "type": "string",
         "minLength": 1,
         "metadata": {
            "description": "Name of the hosting plan to use in Azure."
         }
      },
      "webSiteName": {
         "type": "string",
         "minLength": 1,
         "metadata": {
            "description": "Name of the Azure Web app to create."
         }
      },
      "vnetName": {
         "type": "string",
         "minLength": 1,
         "metadata": {
            "description": "Name of an existing Azure VNet which has a Gateway Subnet already, and is in the resource group you are going to deploy."
         }
      },
      "skuName": {
         "type": "string",
         "defaultValue": "S1",
         "allowedValues": [
            "S1",
            "S2",
            "S3",
            "P1",
            "P2",
            "P3",
            "P4"
         ],
         "metadata": {
            "description": "Describes plan's pricing tier and instance size. Check details at https://azure.microsoft.com/en-us/pricing/details/app-service/"
         }
      },
      "skuCapacity": {
         "type": "int",
         "defaultValue": 1,
         "minValue": 1,
         "metadata": {
            "description": "Describes plan's instance count"
         }
      }
   },
   "resources": [
      {
         "apiVersion": "2015-08-01",
         "name": "[parameters('hostingPlanName')]",
         "type": "Microsoft.Web/serverfarms",
         "location": "[resourceGroup().location]",
         "tags": {
            "displayName": "HostingPlan"
         },
         "sku": {
            "name": "[parameters('skuName')]",
            "capacity": "[parameters('skuCapacity')]"
         },
         "properties": {
            "name": "[parameters('hostingPlanName')]"
         }
      },
      {
         "apiVersion": "2015-08-01",
         "name": "[parameters('webSiteName')]",
         "type": "Microsoft.Web/sites",
         "location": "[resourceGroup().location]",
         "tags": {
            "[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]": "Resource",
            "displayName": "Website"
         },
         "dependsOn": [
            "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]"
         ],
         "properties": {
            "name": "[parameters('webSiteName')]",
            "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
         },
         "resources": [
            {
               "apiVersion": "2015-08-01",
               "name": "web",
               "type": "config",
               "dependsOn": [
                  "[concat('Microsoft.Web/sites/', parameters('webSiteName'))]"
               ],
               "properties": {
                  "pythonVersion": "3.4"
               }
            },
            {
              "apiVersion": "2015-08-01",
              "name": "[parameters('vnetName')]",
              "type": "virtualNetworkConnections",
              "location": "[resourceGroup().location]",
              "dependsOn": [
                  "[concat('Microsoft.Web/sites/', parameters('webSiteName'))]"
              ],
              "properties": {
                  "vnetResourceId": "[concat(resourceGroup().id, '/providers/Microsoft.Network/virtualNetworks/', parameters('vnetName'))]"
              }
            }
         ]
      }
   ]
}

気をつけたい3つのことをご紹介します。

  1. テンプレートは Python Web アプリ テンプレートから始まり、"Microsoft.Web/sites/virtualNetworkConnections" リソースを追加します。したがって、他のプログラミング言語を使用している場合は、他のテンプレートから始めることができます。

  2. 既存の VNet は、デプロイするのと同じリソース グループにある必要があります。使用している VNet が同じリソース グループにない場合は、「Microsoft.Web/sites/virtualNetworkConnections」の「プロパティ」で「vnetResourceId」を変更する必要があります。

  3. 使用している VNet には、既にポイント対サイト アドレスを持つゲートウェイが必要です。そうしないと、Web アプリを VNet に統合できません。詳細については、「PowerShell を使用して仮想ネットワークへのポイント対サイト接続を構成する」を参照してください。

更新: この情報を取得する方法については、まあ、ネット上にはあまりありません。このテンプレートは、PowerShell ソリューションと ARM テンプレートに関する私の知識に基づいて構築されています。PowerShell ソリューションは、この記事で利用できます。ARM テンプレートを取得するもう 1 つの方法は、それらのリソースを 1 つのリソース グループに作成し、リソース グループのテンプレートをポータルにエクスポートすることです。ただし、この場合、リソースの種類 "Microsoft.Web/sites/virtualNetworkConnections" はまだサポートされていないため、これは機能しません。Get-AzureRmResourceただし、オプションを使用して PowerShell コマンドで REST API を確認することはできます-debug

Get-AzureRmResource -ResourceGroupName <resource group> -ResourceType Microsoft.Web/sites/virtualNetworkConnections -Name <web app>/<VNet> -debug -ApiVersion 2015-08-01

次の REST API を取得します。

ウリ:

https://management.azure.com/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Web/sites/<web app>/virtualNetworkConnections/<VNet>?api-version=2015-08-01

体:

{
  "id": "/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Web/sites/<web app>/virtualNetworkConnections/<VNet>",
  "name": "<VNet>",
  "type": "Microsoft.Web/sites/virtualNetworkConnections",
  "location": "<Location>",
  "tags": null,
  "properties": {
    "vnetResourceId": "/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<VNet>"
    "certThumbprint": "<Thumbprint>",
    "certBlob": "<cert>",
    "routes": null,
    "resyncRequired": false,
    "dnsServers": null
  }
}

自動生成された値をスキップすると、私が書いたものと非常によく似たテンプレートが得られます。

{
  "name": "<VNet>",
  "type": "Microsoft.Web/sites/virtualNetworkConnections",
  "location": "<Location>",
  "properties": {
    "vnetResourceId": "/subscriptions/<subscription id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<VNet>"
  }
}
于 2016-07-08T04:12:53.393 に答える