Introduction
Azure Resource Manager (ARM) reste le moteur de déploiement natif d'Azure en 2026. Il permet de décrire une infrastructure complète sous forme de templates JSON déclaratifs. Ce tutoriel intermédiaire vous guide dans la création d'un template ARM fonctionnel incluant paramètres, variables, ressources conditionnelles et sorties. Vous apprendrez à déployer ces templates via Azure CLI tout en évitant les erreurs classiques de validation et de dépendances. Chaque section inclut du code prêt à l'emploi.
Prérequis
- Compte Azure avec permissions Contributor
- Azure CLI 2.50+ installé
- Connaissances de base en JSON et Azure
- Éditeur de code (VS Code recommandé)
Créer le template de base
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"description": "Template ARM intermédiaire pour un compte de stockage"
},
"parameters": {},
"variables": {},
"resources": [],
"outputs": {}
}Ce fichier constitue la structure minimale valide d'un template ARM. Le schéma et la version de contenu sont obligatoires pour la validation par Azure Resource Manager.
Ajouter les paramètres
{
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
}
}Les paramètres permettent de rendre le template réutilisable. La contrainte minLength/maxLength évite les erreurs de nommage lors du déploiement.
Définir les variables et ressources
{
"variables": {
"storageAccountType": "Standard_LRS"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
]
}Les variables centralisent les valeurs réutilisées. La ressource Storage Account utilise l'API 2023-01-01, toujours valide en 2026.
Ajouter les outputs
{
"outputs": {
"storageAccountId": {
"type": "string",
"value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
},
"primaryEndpoint": {
"type": "string",
"value": "[reference(parameters('storageAccountName')).primaryEndpoints.blob]"
}
}
}Les outputs exposent les valeurs utiles après déploiement (ID, endpoints). Elles sont essentielles pour chaîner les déploiements.
Script de déploiement Azure CLI
#!/bin/bash
RG_NAME="rg-arm-demo-2026"
LOCATION="westeurope"
STORAGE_NAME="starmdemo$(date +%s)"
az group create --name $RG_NAME --location $LOCATION
az deployment group create \
--resource-group $RG_NAME \
--template-file azuredeploy.json \
--parameters storageAccountName=$STORAGE_NAMECe script Bash crée le groupe de ressources puis déploie le template. Le nom unique du compte de stockage évite les conflits.
Bonnes pratiques
- Toujours versionner les templates et utiliser des noms de paramètres explicites
- Préférer les variables pour les valeurs calculées plutôt que des expressions répétées
- Ajouter des descriptions dans les métadonnées des paramètres
- Tester systématiquement avec What-If avant déploiement en production
- Utiliser des modules Bicep pour les projets complexes tout en restant compatible ARM
Erreurs courantes à éviter
- Oublier la propriété apiVersion sur les ressources (erreur 400)
- Utiliser des noms de ressources non uniques sans suffixe aléatoire
- Ignorer les dépendances implicites entre ressources
- Ne pas valider le template avec az deployment group validate avant exécution
Pour aller plus loin
Découvrez nos formations avancées sur l'IaC Azure et les déploiements multi-environnements : https://learni-group.com/formations