パラメーター ファイルを使用して値を指定する
前のユニットでは、デプロイの作成時にコマンドラインでパラメーター値を指定しました。 この方法は、Bicep ファイルを作成してテストする場合に適していますが、多数のパラメーターがある場合やデプロイを自動化する必要がある場合にはうまく機能しません。 このユニットでは、パラメーター値を指定するさまざまな方法について説明します。
注
このユニットのコマンドは、概念を説明するために示されています。 コマンドはまだ実行しないでください。 ここで学習した内容をすぐに練習します。
パラメーター ファイルを作成する
              パラメーター ファイル を使用すると、パラメーター値をセットとして簡単に指定できます。 パラメーター ファイル内で、Bicep ファイル内のパラメーターの値を指定します。 パラメーター ファイルは、 .bicepparam ファイル拡張子を持つ Bicep パラメーター ファイルまたはパラメーター値を含む JSON パラメーター ファイルを使用して作成されます。 Bicep テンプレートをデプロイするときに、パラメーター ファイルを指定できます。 JSON パラメーター ファイルは次のようになります。
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    },
    "cosmosDBAccountLocations": {
      "value": [
        {
          "locationName": "australiaeast"
        },
        {
          "locationName": "southcentralus"
        },
        {
          "locationName": "westeurope"
        }
      ]
    }
  }
}
パラメーター ファイルの各部分について詳しく見てみましょう。
- 
              
$schemaは、このファイルがパラメーター ファイルであることを Azure Resource Manager が理解するのに役立ちます。 - 
              
contentVersionは、必要に応じてパラメーター ファイルの大幅な変更を追跡するために使用できるプロパティです。 通常は、既定値の1.0.0.0に設定されます。 - 
              
parametersセクションには、各パラメーターと使用する値が記載されています。 パラメーター値は、オブジェクトとして指定する必要があります。 オブジェクトには、使用する実際のパラメーター値を定義するというvalueプロパティがあります。 
一般に、環境ごとにパラメーター ファイルを作成します。 パラメーター ファイルの名前に環境名を含めるのが良い方法です。 たとえば、開発環境に main.parameters.dev.json という名前のパラメーター ファイルと、運用環境に 対してmain.parameters.production.json という名前のパラメーター ファイルがあるとします。
注
Bicep テンプレートに存在するパラメーター値のみを指定してください。 デプロイを作成する際に、Azure によってパラメーターがチェックされ、Bicep ファイルに含まれていないパラメーター値を指定しようとするとエラーになります。
デプロイ時にパラメーター ファイルを使用する
              az deployment group create コマンドを使用して新しいデプロイを作成する場合は、--parameters引数で使用するパラメーター ファイルの名前を指定できます。
az deployment group create \
  --name main \
  --template-file main.bicep \
  --parameters main.parameters.json
              New-AzResourceGroupDeployment コマンドレットを使用して新しいデプロイを作成する場合は、-TemplateParameterFile引数で使用するパラメーター ファイルの名前を指定できます。
New-AzResourceGroupDeployment `
  -Name main `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json
パラメーター値をオーバーライドする
ここでは、パラメーター値を指定する 3 つの方法 (既定値、コマンド ライン、パラメーター ファイル) について学習しました。 同じパラメーターでも、異なる値を指定するには、異なる方法を用いるのが一般的です。 あなたは既定値を扱ったときにこの方法を見たことがあります。 パラメーターの既定値を作成した後、コマンドラインを使用して別の値を指定すると、コマンドラインの値が優先されます。 パラメーター ファイルがこの優先順位にどのように適合するかを見てみましょう。
              
              
            
パラメーター ファイルが既定値をオーバーライドし、コマンド ライン パラメーター値がパラメーター ファイルをオーバーライドしていることがわかります。
この方法がどのように機能するか見てみましょう。 次に示すのは、3 つのパラメーターを定義する Bicep ファイルの例です。それぞれに既定値が設定されています。
param ___location string = resourceGroup().___location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}
2 つのパラメーターの値をオーバーライドするが、 ___location パラメーターの値を指定しないパラメーター ファイルを見てみましょう。
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServicePlanInstanceCount": {
      "value": 3
    },
    "appServicePlanSku": {
      "value": {
        "name": "P1v3",
        "tier": "PremiumV3"
      }
    }
  }
}
デプロイを作成するときに、appServicePlanInstanceCount の値もオーバーライドします。 パラメーター ファイルと同様に、 --parameters 引数を使用しますが、オーバーライドする値を独自の値として追加します。
az deployment group create \
  --name main \
  --template-file main.bicep \
  --parameters main.parameters.json \
               appServicePlanInstanceCount=5
デプロイを作成するときに、パラメーター値の 1 つをオーバーライドします。 パラメーター名は、コマンドレットの引数であるかのように指定します。
New-AzResourceGroupDeployment `
  -Name main `
  -TemplateFile main.bicep `
  -TemplateParameterFile main.parameters.json `
  -appServicePlanInstanceCount 5
どのような値になるのか見てみましょう。
| パラメーター | 価値 | 説明 | 
|---|---|---|
___location | 
リソース グループの場所。 | Bicep ファイルは、このパラメーターを既定値として指定しており、オーバーライドされません。 | 
appServicePlanSku | 
              name プロパティが P1v3に、tier プロパティが PremiumV3 に設定されたオブジェクト。 | 
Bicep ファイルの既定値は、パラメーター ファイルによってオーバーライドされます。 | 
appServicePlanInstanceCount | 
5 | 
デプロイ時に指定された値は、パラメーター ファイルの既定値と値をオーバーライドします。 | 
これらの方法を組み合わせてパラメーター値を指定することで、多くの場所でパラメーター値を重複して指定する必要がなくなりますが、必要な場所では柔軟にオーバーライドできるようになります。