次の方法で共有


Resource Manager パラメーター ファイルを作成する

スクリプトでパラメーターをインライン値として渡す代わりに、パラメーター値を含む 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.jsonazuredeploy.parameters-prod.json を使用してリソースをデプロイします。

パラメーターの優先順位

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

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

パラメーター名の競合

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

次のステップ