次の方法で共有


チュートリアル: パラメーター ファイルを使用して Azure Resource Manager テンプレートをデプロイする

このチュートリアルでは、 パラメーター ファイル を使用して、デプロイ時に渡す値を格納する方法について説明します。 前のチュートリアルでは、デプロイ コマンドでインライン パラメーターを使用しました。 この方法は Azure Resource Manager テンプレート (ARM テンプレート) をテストするために機能しましたが、デプロイを自動化する場合は、環境に一連の値を渡す方が簡単です。 パラメーター ファイルを使用すると、特定の環境のパラメーター値をパッケージ化しやすくなります。 このチュートリアルでは、開発環境と運用環境用のパラメーター ファイルを作成します。 この命令の完了には 12 分 かかります。

[前提条件]

タグに関するチュートリアルを完了することをお勧めしますが、必須ではありません。

Visual Studio Code と Azure PowerShell または Azure CLI が必要です。 詳細については、 テンプレート ツールを参照してください。

テンプレートを確認する

テンプレートには、デプロイ時に指定できる多くのパラメーターがあります。 前のチュートリアルの最後に、テンプレートには次の JSON ファイルがありました。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2025-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2025-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

このテンプレートは適切に機能しますが、テンプレートに渡すパラメーターを簡単に管理する必要があります。

パラメーター ファイルを追加する

パラメーター ファイルは、テンプレートに似た構造の JSON ファイルです。 このファイルでは、デプロイ時に渡すパラメーター値を指定します。

パラメーター ファイル内で、テンプレート内のパラメーターの値を指定します。 パラメーター ファイル内の各パラメーターの名前は、テンプレート内のパラメーターの名前と一致する必要があります。 名前の大文字と小文字は区別されませんが、値が一致していることを簡単に確認するには、テンプレートとの間で大文字と小文字を一致させることをお勧めします。

すべてのパラメーターに値を指定する必要はありません。 指定されていないパラメーターに既定値がある場合、その値はデプロイ時に使用されます。 パラメーターに既定値が設定されておらず、パラメーター ファイルで指定されていない場合は、デプロイ時に値を指定するように求められます。

テンプレート内のパラメーター名と一致しないパラメーター名をパラメーター ファイルに指定することはできません。 不明なパラメーターを指定するとエラーが発生します。

Visual Studio Code で、次の内容を含む新しいファイルを作成します。 azuredeploy.parameters.dev.json という名前 でファイルを保存します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "devstore"
    },
    "storageSKU": {
      "value": "Standard_LRS"
    },
    "appServicePlanName": {
      "value": "devplan"
    },
    "webAppName": {
      "value": "devapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  }
}

このファイルは、開発環境のパラメーター ファイルです。 ストレージ アカウント にStandard_LRS を使用し、 リソースに開発 プレフィックスを付け、 Environment タグを Dev に設定していることに注意してください。

ここでも、次の内容の新しいファイルを作成します。 azuredeploy.parameters.prod.json という名前 でファイルを保存します。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "contosodata"
    },
    "storageSKU": {
      "value": "Standard_GRS"
    },
    "appServicePlanName": {
      "value": "contosoplan"
    },
    "webAppName": {
      "value": "contosowebapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Production",
        "Project": "Tutorial"
      }
    }
  }
}

このファイルは、運用環境のパラメーター ファイルです。 ストレージ アカウント にStandard_GRS を使用し、 リソースに contoso プレフィックスを付け、 Environment タグを Production に設定していることに注意してください。 実際の運用環境では、無料以外の SKU でアプリ サービスを使用することもできますが、このチュートリアルではその SKU を使用します。

テンプレートのデプロイ

Azure CLI または Azure PowerShell を使用してテンプレートをデプロイします。

テンプレートの最後のテストとして、開発環境用と運用環境用の 2 つの新しいリソース グループを作成しましょう。

テンプレート変数とパラメーター変数の場合は、 {path-to-the-template-file}{path-to-azuredeploy.parameters.dev.json}{path-to-azuredeploy.parameters.prod.json}、および中かっこ {} 、テンプレートとパラメーター ファイルのパスに置き換えます。

まず、開発環境にデプロイしましょう。

$templateFile = "{path-to-the-template-file}"
$parameterFile="{path-to-azuredeploy.parameters.dev.json}"
New-AzResourceGroup `
  -Name myResourceGroupDev `
  -Location "East US"
New-AzResourceGroupDeployment `
  -Name devenvironment `
  -ResourceGroupName myResourceGroupDev `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

次に、運用環境にデプロイします。

$parameterFile="{path-to-azuredeploy.parameters.prod.json}"
New-AzResourceGroup `
  -Name myResourceGroupProd `
  -Location "West US"
New-AzResourceGroupDeployment `
  -Name prodenvironment `
  -ResourceGroupName myResourceGroupProd `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

デプロイが失敗した場合は、 verbose スイッチを使用して、作成しているリソースに関する情報を取得します。 デバッグの詳細を取得するには、 debug スイッチを使用します。

デプロイを検証する

デプロイを確認するには、Azure portal からリソース グループを確認します。

  1. Azure portal にサインインします。
  2. 左側のメニューから、[ リソース グループ] を選択します。
  3. このチュートリアルでは、デプロイする 2 つの新しいリソース グループが表示されます。
  4. いずれかのリソース グループを選択し、デプロイされたリソースを表示します。 これらは、その環境のパラメーター ファイルで指定した値と一致していることに注意してください。

リソースをクリーンアップする

  1. Azure portal で、左側のメニューから [リソース グループ ] を選択します。

  2. チェック ボックスの横にあるハイパーリンクされたリソース グループ名を選択します。 このシリーズを完了すると、myResourceGroup、myResourceGroupDev、myResourceGroupProd の 3 つのリソース グループを削除できます。

  3. 上部のメニューから [ リソース グループの削除 ] アイコンを選択します。

    注意事項

    リソース グループを削除すると、元に戻すことができません。

  4. 表示されるポップアップ ウィンドウにリソース グループ名を入力し、[削除] を選択 します

次のステップ

おめでとうございます。 これで、Azure へのテンプレートのデプロイの概要が完了しました。 フィードバック セクションにコメントや提案がある場合は、お知らせください。

次のチュートリアル シリーズでは、テンプレートのデプロイについて詳しく説明します。