Tags toepassen met ARM-sjablonen

In dit artikel wordt beschreven hoe u Azure Resource Manager-sjablonen (ARM-sjablonen) gebruikt om resources, resourcegroepen en abonnementen te taggen tijdens de implementatie. Zie Tags gebruiken om uw Azure-resources en -beheerhiërarchie te organiseren voor aanbevelingen en beperkingen voor tags.

Notitie

De tags die u toepast via een ARM-sjabloon of Bicep-bestand overschrijven alle bestaande tags.

Waarden toepassen

In het volgende voorbeeld wordt een opslagaccount met drie tags geïmplementeerd. Twee van de tags (Dept en Environment) zijn ingesteld op letterlijke waarden. Eén tag (LastDeployed) is ingesteld op een parameter die standaard de huidige datum heeft.

{
  "$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": {}
    }
  ]
}

Een object toepassen

U kunt een objectparameter definiëren waarin verschillende tags worden opgeslagen en dat object toepassen op het tag-element. Deze benadering biedt meer flexibiliteit dan in het vorige voorbeeld, omdat het object verschillende eigenschappen kan hebben. Elke eigenschap in het object wordt een afzonderlijke tag voor de resource. Het volgende voorbeeld bevat een parameter met de naam tagValues die wordt toegepast op het tag-element.

{
  "$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": {}
    }
  ]
}

Een JSON-tekenreeks toepassen

Als u veel waarden wilt opslaan in een enkele tag, past u een JSON-tekenreeks toe die de waarden vertegenwoordigt. De hele JSON-tekenreeks wordt opgeslagen als één tag die niet langer mag zijn dan 256 tekens. Het volgende voorbeeld heeft een enkele tag met de naam CostCenter die verschillende waarden uit een JSON-tekenreeks bevat:

{
  "$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": {}
    }
  ]
}

Tags toepassen vanuit resourcegroep

Als u tags van een resourcegroep wilt toepassen op een resource, gebruikt u de functie resourceGroup(). Wanneer u de tagwaarde krijgt, gebruikt u de tags[tag-name] syntaxis in plaats van de tags.tag-name syntaxis, omdat sommige tekens niet correct worden geparseerd in de puntnotatie.

{
  "$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": {}
    }
  ]
}

Tags toepassen op resourcegroepen of abonnementen

U kunt tags toevoegen aan een resourcegroep of abonnement door het Microsoft.Resources/tags resourcetype te implementeren. U kunt de tags toepassen op de doelresourcegroep of het abonnement dat u wilt implementeren. Telkens wanneer u de sjabloon implementeert, vervangt u eventuele eerdere tags.

{
  "$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')]"
        }
      }
    }
  ]
}

Als u de tags wilt toepassen op een resourcegroep, gebruikt u Azure PowerShell of Azure CLI. Implementeer naar de resourcegroep die u wilt taggen.

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

Als u de tags wilt toepassen op een abonnement, gebruikt u PowerShell of Azure CLI. Implementeer naar het abonnement dat u wilt taggen.

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

Zie Resourcegroepen en resources maken op abonnementsniveau voor meer informatie over abonnementsimplementaties.

Met de volgende sjabloon worden de tags van een object toegevoegd aan een resourcegroep of abonnement.

{
  "$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')]"
      }
    }
  ]
}

Volgende stappen