Azure Resource Manager テンプレートの変数を使用して式を再利用する
前のシナリオでは、複数の Azure Resource Manager (ARM) テンプレート関数で構成された式を使用して、Azure ストレージ アカウントに対して一意の名前を作成しました。 この柔軟性により、すべての顧客がデプロイに ARM テンプレートを使用できるようになります。 しかし、この式を複数の場所に追加すると、テンプレートを維持する上で問題になることがわかります。 ストレージ アカウント名の式に対して変数を使用して、式を 1 か所で定義し、テンプレート全体で再利用できるようにします。
ARM テンプレート変数とは
ARM テンプレート変数は、後で使用するために値を保持するコンストラクトです。 変数は、テンプレート内の複数の場所で値を指定する必要がある場合に最適です。 テンプレートで使用されているすべての変数が、Resource Manager によって解決された値に置き換えられます。
たとえば、リソースの場所に対する値を定義する式があるとします。 テンプレートで定義したいくつかのリソースには、1 つの場所が必要です。 場所の式を保持する変数を作成し、場所が必要な箇所にその変数を使用できます。
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 バージョンによりリソースのスキーマが決まりますが、多くの場合、リソースのプロパティを変更することなくバージョンを変更することはできません。