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.jsonazuredeploy.parameters-prod.json を使用して、リソースをデプロイします。

パラメーターの優先順位

同じデプロイ操作で、インライン パラメーターとローカル パラメーター ファイルを使用することができます。 たとえば、一部の値をローカル パラメーター ファイルで指定し、その他の値をデプロイ中にインラインで追加します。 ローカル パラメーター ファイルとインラインの両方でパラメーターの値を指定すると、インラインの値が優先されます。

ファイルへの URI を提供することにより、外部パラメーター ファイルを使用することができます。 外部パラメーター ファイルを使用する場合、他の値をインラインまたはローカル ファイルから渡すことはできません。 すべてのインライン パラメーターは無視されます。 すべてのパラメーター値を外部ファイル内で指定します。

パラメーター名の競合

PowerShell コマンドのパラメーターのいずれかと名前が同じであるパラメーターがテンプレートに含まれている場合、PowerShell ではテンプレート内のパラメーター名の後ろに FromTemplate という文字を付加します。 たとえば、テンプレート内の ResourceGroupName という名前のパラメーターは、ResourceGroupName コマンドレットの ResourceGroupName パラメーターと競合します。 ResourceGroupNameFromTemplate の値を指定するように求められます。 この混乱を回避するには、デプロイ コマンドに使用されていないパラメーター名を使用してください。

次のステップ