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 バージョンによりリソースのスキーマが決まりますが、多くの場合、リソースのプロパティを変更することなくバージョンを変更することはできません。