Menerapkan tag dengan templat ARM

Artikel ini menjelaskan cara menggunakan templat Azure Resource Manager (templat ARM) untuk menandai sumber daya, grup sumber daya, dan langganan selama penyebaran. Untuk rekomendasi dan batasan tag, lihat Menggunakan tag untuk mengatur sumber daya Azure dan hierarki manajemen Anda.

Catatan

Tag yang Anda terapkan melalui templat ARM atau file Bicep menimpa tag yang ada.

Terapkan nilai

Contoh berikut menerapkan akun penyimpanan dengan tiga tag. Dua tag (Dept dan Environment) diatur ke nilai harfiah. Satu tag (LastDeployed) diatur ke parameter yang default ke tanggal saat ini.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "utcShort": {
      "type": "string",
      "defaultValue": "[utcNow('d')]"
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[concat('storage', uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "tags": {
        "Dept": "Finance",
        "Environment": "Production",
        "LastDeployed": "[parameters('utcShort')]"
      },
      "properties": {}
    }
  ]
}

Menerapkan objek

Anda dapat menentukan parameter objek yang menyimpan beberapa tag dan menerapkan objek tersebut ke elemen tag. Pendekatan ini memberikan fleksibilitas lebih dari contoh sebelumnya karena objek dapat memiliki properti yang berbeda. Setiap properti dalam objek menjadi tag terpisah untuk sumber daya. Contoh berikut memiliki parameter bernama tagValues yang diterapkan ke elemen tag.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "tagValues": {
      "type": "object",
      "defaultValue": {
        "Dept": "Finance",
        "Environment": "Production"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[concat('storage', uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "tags": "[parameters('tagValues')]",
      "properties": {}
    }
  ]
}

Menerapkan untai (karakter) JSON

Untuk menyimpan banyak nilai dalam satu tag, terapkan untai (karakter) JSON yang mewakili nilai tersebut. Seluruh untai (karakter) JSON disimpan sebagai satu tag yang tidak dapat melebihi 256 karakter. Contoh berikut ini memiliki satu tag bernama CostCenter yang berisi beberapa nilai dari untai (karakter) JSON:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[concat('storage', uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "tags": {
        "CostCenter": "{\"Dept\":\"Finance\",\"Environment\":\"Production\"}"
      },
      "properties": {}
    }
  ]
}

Menerapkan tag dari grup sumber daya

Untuk menerapkan tag dari grup sumber daya ke sumber daya, gunakan fungsi resourceGroup(). Saat mendapatkan nilai tag, gunakan sintaksis tags[tag-name] dan bukan sintaksis tags.tag-name, karena beberapa karakter tidak dipilah dengan benar dalam notasi titik.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[concat('storage', uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "Storage",
      "tags": {
        "Dept": "[resourceGroup().tags['Dept']]",
        "Environment": "[resourceGroup().tags['Environment']]"
      },
      "properties": {}
    }
  ]
}

Menerapkan tag ke grup sumber daya atau langganan

Anda bisa menambahkan tag ke grup sumber daya atau langganan dengan menerapkan Microsoft.Resources/tags jenis sumber daya tersebut. Anda dapat menerapkan tag ke grup sumber daya target atau langganan yang ingin Anda sebarkan. Setiap saat Anda menyebarkan templat, Anda mengganti tag sebelumnya.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "tagName": {
      "type": "string",
      "defaultValue": "TeamName"
    },
    "tagValue": {
      "type": "string",
      "defaultValue": "AppTeam1"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/tags",
      "name": "default",
      "apiVersion": "2021-04-01",
      "properties": {
        "tags": {
          "[parameters('tagName')]": "[parameters('tagValue')]"
        }
      }
    }
  ]
}

Untuk menerapkan tag ke grup sumber daya, gunakan Azure PowerShell atau Azure CLI. Terapkan ke grup sumber daya yang ingin Anda tag.

New-AzResourceGroupDeployment -ResourceGroupName exampleGroup -TemplateFile https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
az deployment group create --resource-group exampleGroup --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json

Untuk menerapkan tag ke langganan, gunakan PowerShell atau Azure CLI. Terapkan ke langganan yang ingin Anda tag.

New-AzSubscriptionDeployment -name tagresourcegroup -Location westus2 -TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json
az deployment sub create --name tagresourcegroup --location westus2 --template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/tags.json

Untuk informasi selengkapnya tentang penyebaran langganan, lihat Membuat grup sumber daya dan sumber daya di tingkat langganan.

Template berikut menambahkan tag dari objek ke grup sumber daya atau langganan.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "tags": {
      "type": "object",
      "defaultValue": {
        "TeamName": "AppTeam1",
        "Dept": "Finance",
        "Environment": "Production"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/tags",
      "apiVersion": "2021-04-01",
      "name": "default",
      "properties": {
        "tags": "[parameters('tags')]"
      }
    }
  ]
}

Langkah berikutnya