Azure Resource Manager テンプレート変数を使用して式を再利用する

完了

前のシナリオでは、複数の Azure Resource Manager (ARM) テンプレート関数で構成される式を使用して、Azure ストレージ アカウントの一意の名前を作成することにしました。 この柔軟性により、すべての顧客がデプロイに ARM テンプレートを使用できるようになります。 しかし、この式をいくつかの場所に追加することは、テンプレートを維持するための問題であることがわかります。 1 か所で式を定義し、テンプレート全体で再利用できるように、ストレージ アカウント名の式に変数を使用することにします。

ARM テンプレート変数とは

ARM テンプレート変数は、後で使用するために値を保持するコンストラクトです。 変数は、テンプレート内の複数の場所で値を指定する必要がある場合に最適です。 テンプレートで変数が使用されている場合は、Resource Manager によって解決された値に置き換えられます。

たとえば、リソースの場所の値を定義する式があるとします。 テンプレートで定義したリソースの一部には、場所が必要です。 場所式を保持する変数を作成し、場所が必要な場合はどこでも変数を使用できます。

ARM テンプレート変数を使用する利点

ARM テンプレート変数を使用すると、式を 1 回記述してから、いくつかの場所で使用できます。 また、式のメンテナンスは 1 か所で行われ、テンプレートの読みやすさも高くなります。

ARM テンプレート変数を使用する方法

ARM テンプレート変数は、テンプレートの variables: {} セクションで定義されます。 たとえば、最後のユニットで定義したストレージ アカウント名の式を次に示します。 これで、 storageName 変数の値が定義されます。

"variables": {
  "storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},

次に、ストレージ アカウント名が必要な場合は、テンプレート内の変数を使用します。

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  }
]

ARM テンプレート変数の推奨事項

テンプレート変数は、キャメル ケースで指定されます。 これらは、特にその値が複雑な式である場合に、複数回指定する必要がある値に最適です。

テンプレートの variables セクションで reference 関数を使用しないでください。 reference関数は実行時に解決され、テンプレートの解析時に変数が解決されます。 また、リソースの apiVersion に変数を使用しないでください。 API のバージョンによってリソースのスキーマが決まります。多くの場合、リソースのプロパティを変更しないとバージョンを変更できません。