チュートリアル: テンプレート スペックをリンクされたテンプレートとしてデプロイする

リンクされたデプロイを使用して既存のテンプレート スペックをデプロイする方法について説明します。 テンプレート スペックは、ARM テンプレートを組織内の他のユーザーと共有するために使用します。 テンプレート スペックを作成したら、Azure PowerShell または Azure CLI を使用してテンプレート スペックをデプロイできます。 リンクされたテンプレートを使用し、ソリューションの一部としてテンプレート スペックをデプロイすることもできます。

前提条件

アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます

Note

Azure PowerShell でテンプレート スペックを使用するには、バージョン 5.0.0 以降をインストールする必要があります。 Azure CLI でこれを使用するには、バージョン 2.14.2 以降を使用します。

テンプレート スペックを作成する

クイック スタート: テンプレート スペックの作成とデプロイに従って、ストレージ アカウントをデプロイするためのテンプレート スペックを作成します。 次の項では、テンプレート スペックのリソース グループ名、テンプレート スペック名、およびテンプレート スペックのバージョンが必要となります。

メイン テンプレートを作成する

ARM テンプレートにテンプレート スペックをデプロイするには、メイン テンプレートにデプロイ リソースを追加します。 templateLink プロパティにテンプレート スペックのリソース ID を指定します。azuredeploy. jsonという名前の次の JSON を使用して、テンプレートを作成します。 このチュートリアルでは、パス c:\Templates\deployTS\azuredeploy.json に保存したことを想定していますが、任意のパスを使用できます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "tsResourceGroup":{
      "type": "string",
      "metadata": {
        "Description": "Specifies the resource group name of the template spec."
      }
    },
    "tsName": {
      "type": "string",
      "metadata": {
        "Description": "Specifies the name of the template spec."
      }
    },
    "tsVersion": {
      "type": "string",
      "defaultValue": "1.0.0.0",
      "metadata": {
        "Description": "Specifies the version the template spec."
      }
    },
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "metadata": {
        "Description": "Specifies the storage account type required by the template spec."
      }
    }
  },
  "variables": {
    "appServicePlanName": "[concat('plan', uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2016-09-01",
      "name": "[variables('appServicePlanName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2020-10-01",
      "name": "createStorage",
      "properties": {
        "mode": "Incremental",
        "templateLink": {
          "id": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
        },
        "parameters": {
          "storageAccountType": {
            "value": "[parameters('storageAccountType')]"
          }
        }
      }
    }
  ],
  "outputs": {
    "templateSpecId": {
      "type": "string",
      "value": "[resourceId(parameters('tsResourceGroup'), 'Microsoft.Resources/templateSpecs/versions', parameters('tsName'), parameters('tsVersion'))]"
    }
  }
}

テンプレート スペック ID は、resourceID() 関数を使用して生成します。 templateSpec が現在のデプロイと同じリソース グループ内にある場合、resourceID () 関数のリソース グループ引数は省略できます。 リソース ID をパラメーターとして直接渡すこともできます。 ID を取得するには、次の構文を使用します。

$id = (Get-AzTemplateSpec -ResourceGroupName $resourceGroupName -Name $templateSpecName -Version $templateSpecVersion).Versions.Id

テンプレート スペックにパラメーターを渡す構文は次のとおりです。

"parameters": {
  "storageAccountType": {
    "value": "[parameters('storageAccountType')]"
  }
}

Note

Microsoft.Resources/deployments の apiVersion は 2020-06-01 以降である必要があります。

テンプレートのデプロイ

リンクされたテンプレートをデプロイすると、Web アプリケーションとストレージ アカウントの両方がデプロイされます。 デプロイは、他の ARM テンプレートのデプロイと同じです。

New-AzResourceGroup `
  -Name webRG `
  -Location westus2

New-AzResourceGroupDeployment `
  -ResourceGroupName webRG `
  -TemplateFile "c:\Templates\deployTS\azuredeploy.json" `
  -tsResourceGroup templateSpecRg `
  -tsName storageSpec `
  -tsVersion 1.0

次のステップ

リンクされたテンプレートを含むテンプレート スペックを作成する方法については、「リンクされたテンプレートのテンプレート スペックを作成する」を参照してください。