web-dev-qa-db-ja.com

ARM

複数のリソースをインスタンス化するAzureResourceManagerテンプレートを作成しています。

Redis、AzureWebJobsDashboard、AzureWebJobsStorage、AzureWebJobsServiceBusのプライマリ接続文字列をキャプチャできるようにしたいと思います。

12
zapoo

あなたの説明によると、ARMテンプレート関数ListKeysを使用してキーを取得し、次のテンプレートコードを使用して接続文字列を設定することをお勧めします。

これは、Redis、Storage、Service Bus接続文字列をキャプチャして、Webアプリケーション設定に追加するデモです。

AzureWebJobsDashboardであるため、AzureWebJobsStorageはストレージ接続文字列であり、AzureWebJobsServiceBusはサービスバスルートマネージャーの接続文字列です。

そのため、テンプレートでは、ストレージとサービスバスの名前に従って接続文字列を直接取得します。

1.テンプレートWebAppを使用して基本的なAzureリソースグループプロジェクトを作成します

2.デモから不要なリソースを削除します。

3.接続文字列設定を追加します

"resources": [
        {
          "name": "connectionstrings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[concat('Microsoft.Web/sites/', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "tomConnectionString"
          },
          "properties": {

            "storage": {
              "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',concat(listKeys(variables('storageAccountId'),'2015-05-01-preview').key1))]",
              "type": "Custom"
            },

            "Redis": {
              "value": "[listKeys(resourceId('Microsoft.Cache/Redis', variables('RedisName')), '2016-04-01').primaryKey]",
              "type": "Custom"
            },

            "ServiceBus": {
              "value": "[listKeys(resourceId(concat('Microsoft.ServiceBus/namespaces/AuthorizationRules'),parameters('serviceBusNamespace'),'RootManageSharedAccessKey'),'2015-08-01').primaryConnectionString]",
              "type": "Custom"
            }

          }
        }
      ]

4.ストレージ情報やサービスバス名などの対応するパラメータまたは変数を追加します。

5.テンプレートをデプロイします

結果は次のとおりです。

enter image description here

完全なテンプレートコード:

{
  "$schema": "https://schema.management.Azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "hostingPlanName": {
      "type": "string",
      "minLength": 1
    },
    "skuName": {
      "type": "string",
      "defaultValue": "S1",
      "allowedValues": [
        "F1",
        "D1",
        "B1",
        "B2",
        "B3",
        "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/"
      }
    },
    "storageAccountName": {
      "type": "string",
      "metadata": {
        "description": "Storage Account to access blob storage."
      }
    },

    "serviceBusNamespace": {
      "type": "string",
      "metadata": {
        "description": "access service bus."
      }
    },
    "skuCapacity": {
      "type": "int",
      "defaultValue": 1,
      "minValue": 1,
      "metadata": {
        "description": "Describes plan's instance count"
      }
    }
  },
  "variables": {
    "webSiteName": "[concat('webSite', uniqueString(resourceGroup().id))]",
    "RedisName": "brando",

    "storageAccountId": "[concat(resourceGroup().id,'/providers/Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]"
  },
  "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": "[variables('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": "[variables('webSiteName')]",
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
      },

      "resources": [
        {
          "name": "connectionstrings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[concat('Microsoft.Web/sites/', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "tomConnectionString"
          },
          "properties": {

            "storage": {
              "value": "[concat('DefaultEndpointsProtocol=https;AccountName=',parameters('storageAccountName'),';AccountKey=',concat(listKeys(variables('storageAccountId'),'2015-05-01-preview').key1))]",
              "type": "Custom"
            },

            "Redis": {
              "value": "[listKeys(resourceId('Microsoft.Cache/Redis', variables('RedisName')), '2016-04-01').primaryKey]",
              "type": "Custom"
            },

            "ServiceBus": {
              "value": "[listKeys(resourceId(concat('Microsoft.ServiceBus/namespaces/AuthorizationRules'),parameters('serviceBusNamespace'),'RootManageSharedAccessKey'),'2015-08-01').primaryConnectionString]",
              "type": "Custom"
            }

          }
        }
      ]
    }
  ]
}
16
Brando Zhang