スクリプトでパラメーターをインライン値として渡す代わりに、パラメーター値を含む JSON ファイルを使用できます。 この記事では、JSON テンプレートで使用するパラメーター ファイルを作成する方法について説明します。
ヒント
Bicep には 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"
}
}
}
注
パラメーター ファイルには、テンプレートで定義されているパラメーターの値のみを含めることができます。 パラメーター ファイルに、テンプレートのパラメーターと一致しない追加のパラメーターが含まれている場合は、エラーが発生します。
パラメーターの型の形式
次の例は、さまざまなパラメーターの型 (文字列、整数、ブール値、配列、およびオブジェクト) の形式を示しています。
{
"$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 を使用したリソースのデプロイに関するページを参照してください。
注
ポータルのカスタム テンプレート ブレードでパラメーター ファイルを使用することはできません。
ヒント
Visual Studio で Azure リソース グループ プロジェクトを使用している場合は、パラメーター ファイルのビルド アクションが [コンテンツ] に設定されていることを確認します。
ファイル名
パラメーター ファイルの一般的な名前付け規則は、テンプレート名に パラメーター を含める方法です。 たとえば、テンプレートに azuredeploy.jsonという名前を付けた場合、パラメーター ファイルにはazuredeploy.parameters.jsonという名前が 付けられます 。 この名前付け規則は、テンプレートとパラメーターの間の接続を確認するのに役立ちます。
異なる環境にデプロイするには、複数のパラメーター ファイルを作成します。 パラメーター ファイルに名前を付ける場合は、開発や運用などの用途を特定します。 たとえば、 azuredeploy.parameters-dev.json と azuredeploy.parameters-prod.json を使用してリソースをデプロイします。
パラメーターの優先順位
インライン パラメーターとローカル パラメーター ファイルは、同じデプロイ操作で使用できます。 たとえば、ローカル パラメーター ファイルで一部の値を指定し、デプロイ時に他の値をインラインで追加できます。 ローカル パラメーター ファイルとインラインの両方でパラメーターの値を指定すると、インライン値が優先されます。
ファイルに URI を指定することで、外部パラメーター ファイルを使用できます。 外部パラメーター ファイルを使用する場合、インラインまたはローカル ファイルから他の値を渡すことはできません。 すべてのインライン パラメーターは無視されます。 外部ファイル内のすべてのパラメーター値を指定します。
パラメーター名の競合
PowerShell コマンドのパラメーターの 1 つと同じ名前のパラメーターがテンプレートに含まれている場合、PowerShell はテンプレートのパラメーターに後置 FromTemplate
を表示します。 たとえば、テンプレート内の ResourceGroupName
という名前のパラメーターが、ResourceGroupName
コマンドレットの パラメーターと競合します。
ResourceGroupNameFromTemplate
の値を指定するように求められます。 この混乱を回避するには、デプロイ コマンドに使用されていないパラメーター名を使用してください。
次のステップ
- テンプレートでパラメーターを定義する方法の詳細については、「ARM テンプレート のパラメーター」を参照してください。
- キー コンテナーからの値の使用の詳細については、「 Azure Key Vault を使用してデプロイ時にセキュリティで保護されたパラメーター値を渡す」を参照してください。