Resource Manager パラメーター ファイルを作成する
スクリプト内のインライン値としてパラメーターを渡すのではなく、パラメーター値を含む JSON ファイルを使用できます。 この記事では、JSON テンプレートで使用するパラメーター ファイルを作成する方法について説明します。
ヒント
ARM テンプレートと同じ機能を備え、構文も使いやすいため、Bicep をお勧めします。 詳細については、「パラメーター ファイル」 を参照してください。
パラメーター ファイル
パラメーター ファイルでは次の形式を使用します。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"<first-parameter-name>": {
"value": "<first-value>"
},
"<second-parameter-name>": {
"value": "<second-value>"
}
}
}
パラメーター値は、パラメーター ファイルでプレーン テキストとして保存されることに着目してください。 この方法は、パスワードなどの機密性の高い値には、セキュリティ上の理由から推奨されません。 機密性の高い値があるパラメーターを渡す必要がある場合は、値をキー コンテナーに保持してください。 次に、そのキー コンテナーへの参照をパラメーター ファイルに含めます。 デプロイ中に、機密性の高い値が安全に取得されます。 詳細については、「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」を参照してください
次のパラメーター ファイルには、プレーンテキスト値と、キー コンテナーに格納されている機密性の高い値が含まれています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"<first-parameter-name>": {
"value": "<first-value>"
},
"<second-parameter-name>": {
"reference": {
"keyVault": {
"id": "<resource-id-key-vault>"
},
"secretName": "<secret-name>"
}
}
}
}
キー コンテナーの値の使用に関する詳細は、「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」を参照してください。
パラメーター値を定義する
パラメーターの名前と値を定義する方法を決定するには、JSON テンプレートを開いて、parameters
セクションを確認します。 次の例は、JSON テンプレートのパラメーターを示しています。
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
]
}
}
パラメーター ファイルで最初に注目する詳細は、各パラメーターの名前です。 パラメーター ファイル内のパラメーター名は、テンプレート内のパラメーター名と一致する必要があります。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
},
"storageAccountType": {
}
}
}
パラメーターの型に注目します。 パラメーター ファイル内のパラメーターの型は、テンプレートと同じ型を使用する必要があります。 この例では、両方のパラメーターの型が文字列です。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": ""
},
"storageAccountType": {
"value": ""
}
}
}
既定値が設定されているパラメーターについてテンプレートを調べます。 パラメーターに既定値がある場合は、パラメーター ファイルで値を指定できますが、必須ではありません。 パラメーター ファイル値は、テンプレートの既定値をオーバーライドします。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": "" // This value must be provided.
},
"storageAccountType": {
"value": "" // This value is optional. Template will use default value if not provided.
}
}
}
テンプレートの許可されている値と、最大長などの制限を確認します。 これらの値は、パラメーターに指定できる値の範囲を規定します。 この例では、storagePrefix
は最大 11 文字を指定でき、storageAccountType
には許可される値を指定する必要があります。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": "storage"
},
"storageAccountType": {
"value": "Standard_ZRS"
}
}
}
Note
パラメーター ファイルには、テンプレートで定義されているパラメーターの値のみを含めることができます。 パラメーター ファイルに、テンプレートのパラメーターと一致しない余分なパラメーターが含まれている場合は、エラーが発生します。
パラメーターの型の形式
次の例は、さまざまなパラメーターの型 (文字列、整数、ブール値、配列、およびオブジェクト) の形式を示しています。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"exampleString": {
"value": "test string"
},
"exampleInt": {
"value": 4
},
"exampleBool": {
"value": true
},
"exampleArray": {
"value": [
"value 1",
"value 2"
]
},
"exampleObject": {
"value": {
"property1": "value1",
"property2": "value2"
}
}
}
}
パラメーター ファイルを使用したテンプレートのデプロイ
Azure CLI からは、@
およびパラメーター ファイル名を使用してローカル パラメーター ファイルを渡します。 たとえば、「 @storage.parameters.json
」のように入力します。
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters @storage.parameters.json
詳細については、ARM テンプレートと Azure CLI でのリソースのデプロイに関するページを参照してください。
Azure PowerShell からは、TemplateParameterFile
パラメーターを使用してローカル パラメーター ファイルを渡します。
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
-TemplateFile C:\MyTemplates\storage.json `
-TemplateParameterFile C:\MyTemplates\storage.parameters.json
詳細については、「ARM テンプレートと Azure PowerShell を使用したリソースのデプロイ」を参照してください。
Note
ポータルで、カスタム テンプレート ブレードでパラメーター ファイルを使用することはできません。
ヒント
Visual Studio で Azure リソース グループ プロジェクトを使用している場合は、パラメーター ファイルのビルド アクションが [コンテンツ] に設定されていることを確認してください。
ファイル名
パラメーター ファイルの一般的な名前付け規則は、テンプレート名に parameters を含めることです。 たとえば、テンプレートの名前が azuredeploy.json の場合、パラメーター ファイルには azuredeploy.parameters.json という名前を付けます。 この名前付け規則により、テンプレートとパラメーターの関連がわかります。
さまざまな環境にデプロイするには、複数のパラメーター ファイルを作成します。 パラメーター ファイルに名前を付けるときは、開発や運用など、その用途を明確にします。 たとえば、azuredeploy.parameters-dev.json と azuredeploy.parameters-prod.json を使用して、リソースをデプロイします。
パラメーターの優先順位
同じデプロイ操作で、インライン パラメーターとローカル パラメーター ファイルを使用することができます。 たとえば、一部の値をローカル パラメーター ファイルで指定し、その他の値をデプロイ中にインラインで追加します。 ローカル パラメーター ファイルとインラインの両方でパラメーターの値を指定すると、インラインの値が優先されます。
ファイルへの URI を提供することにより、外部パラメーター ファイルを使用することができます。 外部パラメーター ファイルを使用する場合、他の値をインラインまたはローカル ファイルから渡すことはできません。 すべてのインライン パラメーターは無視されます。 すべてのパラメーター値を外部ファイル内で指定します。
パラメーター名の競合
PowerShell コマンドのパラメーターのいずれかと名前が同じであるパラメーターがテンプレートに含まれている場合、PowerShell ではテンプレート内のパラメーター名の後ろに FromTemplate
という文字を付加します。 たとえば、テンプレート内の ResourceGroupName
という名前のパラメーターは、ResourceGroupName
コマンドレットの ResourceGroupName
パラメーターと競合します。 ResourceGroupNameFromTemplate
の値を指定するように求められます。 この混乱を回避するには、デプロイ コマンドに使用されていないパラメーター名を使用してください。
次のステップ
- テンプレートにパラメーターを定義する方法の詳細については、「ARM テンプレートのパラメーター」を参照してください。
- キー コンテナーの値の使用に関する詳細は、「デプロイ時に Azure Key Vault を使用して、セキュリティで保護されたパラメーター値を渡す」を参照してください。