Azure Resource Manager テンプレートのタグとパラメーター ファイルを使用して複数の Azure デプロイを保守する

完了

Azure Resource Manager (ARM) テンプレートには、複数の Azure 環境にデプロイするときに使用する 2 つの機能があります。 これらの機能は、"リソース タグ" と "ARM テンプレート パラメーター ファイル" です。

環境に追加するリソースが増えると、これらのリソースの目的を識別する方法が必要であることがすぐにわかります。 リソースには、この目的のための tags: 属性があります。 デプロイする環境が増えると、入力パラメーターを追跡する効率的な方法が必要になります。 ARM テンプレートでは、パラメーター ファイルを使用して、各デプロイ環境のパラメーターを管理できます。

Azure リソース タグとは

リソースにタグを付けて、それらの使用を識別するのに役立つ値を追加できます。 たとえば、環境と、リソースが属しているプロジェクトの一覧を示すタグを追加できます。 または、リソースを所有しているコスト センターまたはチームを識別するタグを追加することもできます。 組織にとって意味のある値を追加します。

タグの値は、Azure リソースの概要ページとコスト レポートに表示されます。

Azure リソースのタグを作成する方法

各リソースには、tags: 属性があります。 これまで、ストレージ アカウントに対するタグとしては既定の displayName を使用してきました。

"tags": {
          "displayName": "[parameters('storageName')]"
        },

この属性をさらに便利にするため、より多くの情報を保持するパラメーターを定義し、そのパラメーターを tags: 属性で使用することができます。 たとえば、resourceTags という名前のオブジェクトを保持するパラメーターを作成できます。

"resourceTags": {
    "type": "object",
    "defaultValue": {
        "Environment": "Dev",
        "Project": "Inventory"
        }
    }

ここでは、環境名とプロジェクト名の値を保持するオブジェクトを作成しましたが、必要なものを何でも定義できます。

その後、ストレージ アカウントなど、Dev 環境および Inventory プロジェクト用のリソースに対して、そのパラメーターを使用できます。

"resources": [{
        "name": "[variables('uniqueStorageName')]",
        "type": "Microsoft.Storage/storageAccounts",
        "apiVersion": "2019-06-01",
        "tags": "[parameters('resourceTags')]",
        ...
    }],

ARM テンプレートのパラメーター ファイルとは

ARM テンプレートのパラメーター ファイルには、ARM テンプレートが実行されるときにテンプレートに渡される値が保持されます。 ARM テンプレートのデプロイ先である環境ごとにパラメーター ファイルを使用すると、その特定の環境に対して適切なパラメーターが確実に設定されます。 また、これらのパラメーター値の履歴とメンテナンスをソース管理で追跡できることも確認します。

ARM テンプレートのパラメーター ファイルを使用する方法

ARM テンプレートのパラメーター ファイルは、パラメーター値が保持されている JSON ファイルです。 たとえば、これまでに ARM テンプレートで使用したパラメーターについては、次のようにテンプレート パラメーター ファイルを作成できます。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "storagePrefix": {
        "value": "storage"
      },
      "storageSKU": {
        "value": "Standard_LRS"
      },
      "resourceTags": {
        "value": {
          "Environment": "Dev",
          "Project": "Learn"
        }
      }
    }
  }

その後、各環境に対してこのファイルと同じようなファイルを作成できます。 たとえば、これらのファイルは、azuredeploy.parameters.dev.json や azuredeploy.parameters.prod.json のような名前で、パラメーターに異なる値が保持されています。

パラメーター ファイルを使用して ARM テンプレートをデプロイするには、デプロイ コマンドでパラメーター ファイルへのパスを指定します。 Azure CLI の場合は、--parameters {path to parameter file} を使用します。 PowerShell の場合は、-TemplateParameterFile {path to parameter file} を使用します。

templateFile="{path-to-the-template-file}"
devParameterFile="{path-to-azuredeploy.parameters.dev.json}"
az group create \
  --name myResourceGroupDev \
  --location "East US"
az deployment group create \
  --name devenvironment \
  --resource-group myResourceGroupDev \
  --template-file $templateFile \
  --parameters $devParameterFile