Gestion des étiquettes sur Azure via Azure CLI
Tags: azure, cloud
Published: 2023-08-08 20:27:46

Les étiquettes (ou étiquettes) sont des métadonnées applicables aux ressources Azure. Il s'agit de paires clé-valeur qui aident dans l'identification des ressources en fonction des paramètres pertinents pour votre organisation.
Les étiquettes peuvent s'appliquer aux ressources, groupes de ressources et souscriptions dans Azure.

## Quelques règles relatives aux étiquettes

- Les noms des étiquettes (clés) ne respectent pas la casse pour les opérations. Ils peuvent aller jusqu'à 512 caractères sauf pour ceux appliqués à un Storage Account qui sont limités à 128. 
- Les valeurs des étiquettes respectent la casse. ls peuvent aller jusqu'à 256 caractères
- Les étiquettes ne peuvent faire l'objet d'héritage. Par exemple si vous avez un tag au niveau d'une RG (Resource Group), il ne sera pas hérité par les ressources crées à l'intérieur de la RG.
- Une ressource peut avoir jusqu'à 50 tags
- Il est possible d'utiliser Azure Policy pour imposer les tags sur certaines ressources.
- Les tags sont stockés sous forme de texte brut. N’ajoutez jamais de valeurs sensibles aux tags.
- Les noms d'étiquettes ne peuvent pas contenir ces caractères : `<, >, %, &, \, ?, /`
- 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 [ici](https://https://learn.microsoft.com/fr-fr/azure/azure-resource-manager/management/tag-support).

## Autorisation pour la gestion des étiquettes

Il existe deux façons d’obtenir l’accès requis aux ressources tag.
- Vous pouvez disposer d’un accès en écriture au type de ressource Microsoft.Resources/tags. Cet accès vous permet d’étiqueter n’importe quelle ressource, même si vous n’avez pas accès à la ressource elle-même.
- Vous pouvez disposer d’un accès en écriture à la ressource elle-même. Le rôle Contributeur accorde l’accès requis pour appliquer des tags à n’importe quelle entité.


## Quelques exemples d'usage

L'usage des étiquettes peut faciliter : 
1. Le regroupement des données de facturation par environnement (production, recette, etc.), entité (Marketing, RH, Finance, etc.)

2. La gestion efficience des ressources : application patch de sécurité des VMs Linux, définition plage de maintenance pour les bases de données, fourniture détails (application, projet, owner, activation de certaines fonctionnalités (monitoring, maintenance, etc.)

> Dans la suite, nous allons montrer comment appliquer des étiquettes en utilisant Azure CLI


## I. Manipulation des étiquettes avec Azure CLI

### &nbsp;&nbsp;&nbsp;&nbsp;1. Ajout d'étiquettes à une ressource groupe

Nous allons ajouter les étiquettes suivantes à une RG (Resource Group) existante:

- Environment: Production
- Department: IT
- CreatedBy: YourName

D'abord nous allons lister les RGs existants avec la commande suivante:

```
az group list
```

![Liste RG](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w6mlbtsb0sxpo9dnoxrv.png)

Ensuite en utilisant la commande ci-dessous, nous allons ajouter les étiquettes:

```
az group update \
-n "395-a1742192-add-remove-and-update-tags-for-resou" \
--tags \
"Environment=production" \
"Department=IT" \
"CreatedBy=K6SY"
```

`L'option -n permet de spécifier le nom de la RG. Dans votre cas, il faudra le remplacer`

![Ajout tags RG](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jzzag7fxd9blab8vwxfu.png)


### &nbsp;&nbsp;&nbsp;&nbsp;2. Suppression / Ajout d'étiquettes à une VM

Dans cet exemple, nous allons supprimer l'étiquettes defaultExperience d'une VM et lui rajouter celle de MarkForDeletion=Yes.

D'abord, nous utilisons la commande ci-dessous pour afficher de façon simplifiée (nom, RG, tags) les VMs existants

```
az vm list --query \
'[].{name:name, resourceGroup:resourceGroup, tags: tags}' \
-o json
```

`L'option --query permet d'appliquer un filtre sur le résultat et l'option -o permet de spécifier le formatage souhaité pour la sortie de la commande.`

![List VM](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ouqbj0ska9n1equv1tgl.png)

Ensuite avec la commande ci-dessous, nous supprimons l'étiquette defaultExperience de la VM.

```
az vm update \
-g "395-A1742192-ADD-REMOVE-AND-UPDATE-TAGS-FOR-RESOU" \
-n "webvm1" \
--remove tags.defaultExperience
```
`L'option -n permet de spécifier le nom de la VM et l'option -g le nom de la RG. Dans votre cas, il faudra les remplacer`


![suppression VM tag](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yqnpnpynu31u52scqcbd.png)

Enfin, la commande ci-dessous permet d'ajouter à la même VM le tag MarkForDeletion=Yes

```
az vm update \
-g "395-A1742192-ADD-REMOVE-AND-UPDATE-TAGS-FOR-RESOU"\
-n "webvm1" \
--set tags.MarkForDeletion=Yes
```


![Ajout VM tag](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1au014a9ooav6ctj0je8.png)

Vous pouvez vérifier l'ajout de l'étiquette à la fin de la sortie de la commande précédente. Comme le montre la figure ci-dessous:

![verification tag vm](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eb0y4sx6xqsgba7mpf5i.png)


### &nbsp;&nbsp;&nbsp;&nbsp;3. Substitution d'étiquettes sur un VNET

Dans cet exemple, nous allons remplacer les tags d'un Vnet par d'autres que sont:

- Department: IT
- Environment: Production
- CreatedBy: K6SY

D'abord, nous allons afficher la liste des Vnet en filtrant la sortie pour n'afficher que le nom, la RG et les tags

```
az network vnet list --query \
'[].{name:name, resourceGroup:resourceGroup, tags: tags}' \
-o json
```


![List vnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eoyodf9ypt5cxff8n152.png)

Ensuite, la commande ci-dessous permet de créer une ressource tag qui contient des tags et qui va substituer ceux existants sur le vnet.

```
az resource tag \
--tags \
"Department=IT" \
"Environment=Production" \
"CreatedBy=K6SY" \
-g 395-a1742192-add-remove-and-update-tags-for-resou \
-n vnet1 \
--resource-type "Microsoft.Network/virtualNetworks"
```

`L'option -n permet de spécifier le nom de la VM et l'option -g le nom de la RG. Dans votre cas, il faudra les remplacer`


![Ajout tag vnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mf4040prqy1sipdqxcn6.png)

Vous pouvez vérifier l'ajout des tags à la fin de la sortie de la commande précédente. Comme le montre la figure ci-dessous:

![verification tag vnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nfdeymyvhejpfhsd8hvn.png)


Merci infiniment