Réutiliser des expressions à l’aide des variables du modèle Azure Resource Manager

Effectué

Dans le scénario précédent, vous avez décidé d’utiliser une expression composée de plusieurs fonctions de modèle Azure Resource Manager (ARM) afin de créer un nom unique pour le compte de stockage Azure. Cette flexibilité garantit que chacun tous vos clients seront en mesure d’utiliser ce modèle ARM pour leurs déploiements. Vous remarquez cependant que l’ajout de cette expression à plusieurs endroits est un problème pour la maintenance du modèle. Vous décidez d’utiliser une variable pour l’expression du nom du compte de stockage afin de pouvoir définir l’expression à un seul endroit et de la réutiliser dans tout le modèle.

Qu’est-ce qu’une variable de modèle ARM ?

Une variable de modèle ARM est une construction qui contient une valeur pour une utilisation ultérieure. Les variables sont particulièrement utiles quand une valeur doit être spécifiée à différents endroits d’un modèle. Partout où la variable est utilisée dans le modèle, Resource Manager la remplace par la valeur résolue.

Par exemple, vous avez une expression qui définit une valeur pour une localisation des ressources. Plusieurs des ressources que vous avez définies dans votre modèle nécessitent la spécification d’un emplacement. Vous pouvez créer une variable qui contiendra l’expression de l’emplacement, puis utiliser la variable partout où un emplacement est nécessaire.

Avantages de l’utilisation des variables de modèle ARM

Les variables de modèle ARM vous permettent d’écrire une expression une seule fois, puis de l’utiliser à plusieurs endroits. En outre, la maintenance de l’expression se fait à un seul endroit et le modèle est plus lisible.

Comment utiliser des variables de modèle ARM ?

Les variables de modèle ARM sont définies dans la section variables: {} d’un modèle. Par exemple, voici l’expression pour le nom du compte de stockage que vous avez défini dans la dernière unité. Elle définit maintenant la valeur de la variable storageName.

"variables": {
  "storageName": "[concat(toLower(parameters('storageNamePrefix')), uniqueString(resourceGroup().id))]"
},

Vous utilisez ensuite la variable dans le modèle partout où vous avez besoin du nom du compte de stockage :

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "name": "[variables('storageName')]",
    ...
  }
]

Recommandations pour les variables de modèle ARM

Les variables de modèle sont spécifiées en casse mixte. Elles sont pratiques pour les valeurs que vous devez spécifier plusieurs fois, en particulier si cette valeur est une expression complexe.

N’utilisez pas la fonction reference dans la section des variables d’un modèle. La fonction reference est résolue au moment de l’exécution et les variables sont résolues lors de l’analyse du modèle. De même, n’utilisez pas de variables pour apiVersion sur une ressource. La version de l’API détermine le schéma de la ressource et souvent, vous ne pouvez pas changer la version sans changer les propriétés de la ressource.