Applicare tag con i modelli di Resource Manager

Questo articolo descrive come usare modelli di Azure Resource Manager (modelli arm) per contrassegnare risorse, gruppi di risorse e sottoscrizioni durante la distribuzione. Per suggerimenti e limitazioni dei tag, vedere Usare i tag per organizzare le risorse di Azure e la gerarchia di gestione.

Nota

I tag applicati tramite un modello arm o un file Bicep sovrascrivono i tag esistenti.

Applicare i valori

Nell'esempio seguente viene distribuito un account di archiviazione con tre tag. Due dei tag (Dept e Environment) sono impostati su valori letterali. Un tag (LastDeployed) è impostato su un parametro che viene impostato per impostazione predefinita sulla data corrente.

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

Applicare un oggetto

È possibile definire un parametro dell'oggetto che archivia diversi tag e applicare tale oggetto all'elemento tag. Questo approccio offre maggiore flessibilità rispetto all'esempio precedente perché l'oggetto può avere proprietà diverse. Ogni proprietà nell'oggetto diventa un tag separato per la risorsa. Nell'esempio seguente è presente un parametro denominato tagValues applicato all'elemento 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": {}
    }
  ]
}

Applicare una stringa JSON

Per memorizzare più valori in un singolo tag, è possibile applicare una stringa JSON che rappresenta tali valori. L'intera stringa JSON viene archiviata come tag che non può superare i 256 caratteri. L'esempio seguente include un tag singolo denominato CostCenter che contiene più valori da una stringa 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": {}
    }
  ]
}

Applicare tag dal gruppo di risorse

Per applicare tag da un gruppo di risorse a una risorsa, usare la funzione resourceGroup(). Quando si ottiene il valore del tag, usare la tags[tag-name] sintassi anziché la tags.tag-name sintassi, perché alcuni caratteri non vengono analizzati correttamente nella notazione del punto.

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

Applicare tag ai gruppi di risorse o alle sottoscrizioni

È possibile aggiungere tag a un gruppo di risorse o una sottoscrizione distribuendo il Microsoft.Resources/tags tipo di risorsa. È possibile applicare i tag al gruppo di risorse di destinazione o alla sottoscrizione da distribuire. Ogni volta che si distribuisce il modello si sostituisce qualsiasi tag precedente.

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

Per applicare i tag a un gruppo di risorse, usare Azure PowerShell o l'interfaccia della riga di comando di Azure. Distribuire nel gruppo di risorse che si vuole contrassegnare.

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

Per applicare i tag a una sottoscrizione, usare PowerShell o l'interfaccia della riga di comando di Azure. Distribuire nella sottoscrizione che si vuole contrassegnare.

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

Per altre informazioni sulle distribuzioni di sottoscrizioni, vedere Creare gruppi di risorse e risorse a livello di sottoscrizione.

Il modello seguente aggiunge i tag da un oggetto a un gruppo di risorse o a una sottoscrizione.

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

Passaggi successivi