Aplicar etiquetas com modelos arm
Este artigo descreve como utilizar modelos de Resource Manager do Azure (modelos arm) para etiquetar recursos, grupos de recursos e subscrições durante a implementação. Para obter recomendações e limitações de etiquetas, veja Utilizar etiquetas para organizar os recursos do Azure e a hierarquia de gestão.
Nota
As etiquetas que aplicar através de um modelo arm ou ficheiro Bicep substituem todas as etiquetas existentes.
Aplicar valores
O exemplo seguinte implementa uma conta de armazenamento com três etiquetas. Duas das etiquetas (Dept
e Environment
) estão definidas para valores literais. Uma etiqueta (LastDeployed
) está definida como um parâmetro predefinido para a data atual.
{
"$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": {}
}
]
}
Aplicar um objeto
Pode definir um parâmetro de objeto que armazene várias etiquetas e aplique esse objeto ao elemento de etiqueta. Esta abordagem proporciona mais flexibilidade do que o exemplo anterior, uma vez que o objeto pode ter propriedades diferentes. Cada propriedade no objeto torna-se uma etiqueta separada para o recurso. O exemplo seguinte tem um parâmetro com o nome tagValues
aplicado ao elemento de etiqueta.
{
"$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": {}
}
]
}
Aplicar uma cadeia JSON
Para armazenar muitos valores numa única etiqueta, aplique uma cadeia JSON que represente os valores. Toda a cadeia JSON é armazenada como uma etiqueta que não pode exceder os 256 carateres. O exemplo seguinte tem uma única etiqueta com o nome CostCenter
que contém vários valores de uma cadeia 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": {}
}
]
}
Aplicar etiquetas do grupo de recursos
Para aplicar etiquetas de um grupo de recursos a um recurso, utilize a função resourceGroup( ). Quando obter o valor da etiqueta, utilize a tags[tag-name]
sintaxe em vez da tags.tag-name
sintaxe, porque alguns carateres não são analisados corretamente na notação de pontos.
{
"$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": {}
}
]
}
Aplicar etiquetas a grupos de recursos ou subscrições
Pode adicionar etiquetas a um grupo de recursos ou subscrição ao implementar o Microsoft.Resources/tags
tipo de recurso. Pode aplicar as etiquetas ao grupo de recursos de destino ou à subscrição que pretende implementar. Sempre que implementar o modelo, substitui as etiquetas anteriores.
{
"$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')]"
}
}
}
]
}
Para aplicar as etiquetas a um grupo de recursos, utilize Azure PowerShell ou a CLI do Azure. Implemente no grupo de recursos que pretende etiquetar.
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
Para aplicar as etiquetas a uma subscrição, utilize o PowerShell ou a CLI do Azure. Implemente na subscrição que pretende etiquetar.
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
Para obter mais informações sobre implementações de subscrições, veja Criar grupos de recursos e recursos ao nível da subscrição.
O modelo seguinte adiciona as etiquetas de um objeto a um grupo de recursos ou a uma subscrição.
{
"$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')]"
}
}
]
}
Passos seguintes
- Nem todos os tipos de recursos suportam etiquetas. Para determinar se pode aplicar uma etiqueta a um tipo de recurso, veja Suporte de etiquetas para recursos do Azure.
- Para obter recomendações sobre como implementar uma estratégia de etiquetagem, veja Guia de decisão de nomenclatura de recursos e identificação.
- Para obter recomendações e limitações de etiquetas, veja Utilizar etiquetas para organizar os recursos do Azure e a hierarquia de gestão.