Appliquer des balises avec des modèles ARM
Cet article explique comment utiliser des modèles Azure Resource Manager (modèles ARM) pour baliser des ressources, des groupes de ressources et des abonnements pendant le déploiement. Pour obtenir les recommandations et limitations des balises, consultez Utiliser des balises pour organiser vos ressources Azure et votre hiérarchie de gestion.
Notes
Les étiquettes que vous appliquez via un modèle ARM ou un fichier Bicep remplacent toutes les étiquettes existantes.
Appliquer les valeurs
L’exemple suivant déploie un compte de stockage avec trois étiquettes. Deux des étiquettes (Dept
et Environment
) sont définies sur des valeurs littérales. Une étiquette (LastDeployed
) a pour valeur un paramètre dont la valeur par défaut est la date actuelle.
{
"$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": {}
}
]
}
Appliquer un objet
Vous pouvez définir un paramètre d’objet qui stocke plusieurs balises et appliquer cet objet à l’élément de balise. Cette approche offre plus de souplesse que l’exemple précédent, car l’objet peut avoir des propriétés différentes. Chaque propriété de l’objet devient une balise distincte pour la ressource. L’exemple suivant illustre un paramètre nommé tagValues
appliqué à l’élément de balise.
{
"$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": {}
}
]
}
Analyser une chaîne JSON
Pour stocker plusieurs valeurs dans une seule balise, appliquez une chaîne JSON qui représente les valeurs. La chaîne JSON complète est stockée sous la forme d’une balise ne pouvant pas dépasser 256 caractères. L’exemple illustre une balise unique nommée CostCenter
qui contient plusieurs valeurs d’une chaîne 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": {}
}
]
}
Appliquer des balises à partir d’un groupe de ressources
Pour appliquer des balises d’un groupe de ressources à une ressource, utilisez la fonction resourceGroup(). Lorsque vous obtenez la valeur de balise, utilisez la syntaxe tags[tag-name]
au lieu de la syntaxe tags.tag-name
, car certains caractères ne sont pas correctement analysés dans la notation par points.
{
"$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": {}
}
]
}
Appliquer des étiquettes à des groupes de ressources ou à des abonnements
Vous pouvez ajouter des étiquettes à un groupe de ressources ou à un abonnement en déployant le type de ressource Microsoft.Resources/tags
. Vous pouvez appliquer les étiquettes au groupe de ressources ou à l’abonnement cible que vous souhaitez déployer. Chaque fois que vous déployez le modèle, vous remplacez les étiquettes précédentes.
{
"$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')]"
}
}
}
]
}
Pour appliquer les étiquettes à un groupe de ressources, utilisez Azure PowerShell ou Azure CLI. Déployez sur le groupe de ressources que vous souhaitez baliser.
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
Pour appliquer les étiquettes à un abonnement, utilisez PowerShell ou Azure CLI. Déployez sur l’abonnement que vous souhaitez baliser.
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
Pour plus d’informations sur les déploiements dans des abonnements, consultez Créer des groupes de ressources et des ressources au niveau de l’abonnement.
Le modèle suivant ajoute les étiquettes depuis un objet vers un groupe de ressources ou un 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')]"
}
}
]
}
Étapes suivantes
- Les types de ressources ne prennent pas tous en charge les étiquettes. Pour déterminer si vous pouvez appliquer une étiquette à un type de ressource, consultez Prise en charge des étiquettes pour les ressources Azure.
- Pour obtenir des recommandations sur la façon d’implémenter une stratégie d’étiquetage, consultez Guides de décision concernant le nommage et l’étiquetage des ressources.
- Pour obtenir les recommandations et limitations des balises, consultez Utiliser des balises pour organiser vos ressources Azure et votre hiérarchie de gestion.