0Pricing
Cloud & IT Cert Prep · Leçon

Écriture de modèles ARM

Créez dans JSON un modèle ARM paramétré pour déployer un compte de stockage et une VM, puis utilisez des fonctions et des variables de modèle pour rendre vos modèles réutilisables.

Écriture de modèles ARM est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Pourquoi utiliser des modèles ARM ?

Les modèles ARM vous permettent de définir l'infrastructure Azure sous forme de code au format JSON. Vous pouvez ainsi effectuer des déploiements reproductibles et cohérents, dont le contrôle de version peut être géré avec le code de votre application. Les modèles sont idempotents : l'exécution répétée du même modèle produit le même résultat, ce qui permet de les appliquer à nouveau en toute sécurité après des modifications.

Structure de base et schéma du modèle

Chaque modèle ARM commence par une propriété $schema qui pointe vers l'URL du schéma du modèle, suivie d'une chaîne contentVersion. Le schéma indique au portail Azure et aux extensions de l'éditeur comment valider votre modèle et fournir IntelliSense. Les cinq sections principales qui suivent sont parameters, variables, functions, resources et outputs.

{
  '$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
  'contentVersion': '1.0.0.0',
  'parameters': {},
  'variables': {},
  'functions': [],
  'resources': [],
  'outputs': {}
}

Définition des paramètres

Les paramètres rendent les modèles réutilisables en acceptant des valeurs d'entrée au moment du déploiement. Chaque paramètre possède un type (string, int, bool, object, array, secureString), un defaultValue facultatif et des allowedValues facultatives pour la validation. L'utilisation de secureString pour les mots de passe garantit que la valeur n'est jamais consignée dans l'historique du déploiement.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24,
    "metadata": { "description": "Globally unique storage account name" }
  },
  "sku": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": ["Standard_LRS", "Standard_GRS", "Premium_LRS"]
  }
}

Utilisation de variables pour les valeurs calculées

Les variables stockent des valeurs calculées à partir de paramètres ou de fonctions du modèle, ce qui réduit les répétitions et facilite la maintenance des modèles. Les variables sont évaluées une seule fois, puis référencées dans toute la section des ressources à l'aide de l'expression [variables('name')]. Une pratique courante consiste à construire un nom de ressource en concaténant un paramètre avec un suffixe unique.

"variables": {
  "uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
  "location": "[resourceGroup().location]"
}

Définition des ressources

Le tableau resources constitue le cœur d'un modèle ARM. Chaque élément décrit une ressource Azure à l'aide des champs obligatoires suivants : type, apiVersion, name et location. La propriété apiVersion fixe la version du schéma du fournisseur de ressources ; utilisez toujours une version stable récente pour accéder aux dernières fonctionnalités et éviter les propriétés obsolètes.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2023-01-01",
    "name": "[variables('uniqueStorageName')]",
    "location": "[variables('location')]",
    "sku": { "name": "[parameters('sku')]" },
    "kind": "StorageV2",
    "properties": {
      "supportsHttpsTrafficOnly": true,
      "minimumTlsVersion": "TLS1_2"
    }
  }
]

Fonctions et expressions des modèles

Les expressions des modèles ARM sont placées entre crochets [...] et prennent en charge des fonctions intégrées pour les chaînes, les tableaux, les objets et les ID de ressources. Parmi les fonctions courantes figurent concat(), resourceGroup(), resourceId(), uniqueString() et parameters(). ARM évalue ces fonctions côté serveur au moment du déploiement, et non localement.

// Reference a resource ID inside a template
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'myVNet', 'mySubnet')]"

// Build a unique, deterministic name
"name": "[concat('storage', uniqueString(resourceGroup().id))]"

// Conditionally include a resource
"condition": "[equals(parameters('deployStorage'), true)]"

Sorties : renvoyer des valeurs

La section outputs définit les valeurs qu'ARM renvoie après un déploiement réussi. Les sorties sont essentielles pour enchaîner les modèles : vous déployez un modèle de réseau et renvoyez l'ID de ressource du sous-réseau, puis vous le transmettez comme paramètre à un modèle de VM. Les sorties peuvent référencer n'importe quelle expression, y compris les propriétés de ressources issues du déploiement.

"outputs": {
  "storageAccountName": {
    "type": "string",
    "value": "[variables('uniqueStorageName')]"
  },
  "blobEndpoint": {
    "type": "string",
    "value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
  }
}

Modèles liés et imbriqués

Pour les architectures complexes, ARM prend en charge les modèles liés (qui référencent des URL de modèles externes) et les modèles imbriqués (qui intègrent un modèle dans le tableau des ressources à l'aide du type Microsoft.Resources/deployments). Vous pouvez ainsi diviser un déploiement d'infrastructure volumineux en éléments modulaires et réutilisables, tout en conservant un seul modèle d'orchestration comme point d'entrée.

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2021-04-01",
  "name": "networkDeploy",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "https://raw.githubusercontent.com/contoso/templates/main/network.json",
      "contentVersion": "1.0.0.0"
    },
    "parameters": {
      "vnetName": { "value": "[parameters('vnetName')]" }
    }
  }
}

Fichiers de paramètres

Au lieu de transmettre les paramètres sur la ligne de commande, stockez-les dans un fichier de paramètres distinct : un fichier JSON contenant un objet parameters composé de paires nom-valeur. Les fichiers de paramètres peuvent être propres à chaque environnement (par exemple, dev.parameters.json et prod.parameters.json) et être intégrés au contrôle de version, tandis que les valeurs sensibles sont conservées dans des références à Azure Key Vault plutôt qu'en texte brut.

// dev.parameters.json
{
  '$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#',
  'contentVersion': '1.0.0.0',
  'parameters': {
    'storageAccountName': { 'value': 'devstorageacct' },
    'sku': { 'value': 'Standard_LRS' }
  }
}

// Deploy with parameters file
// az deployment group create -g MyRG -f azuredeploy.json -p dev.parameters.json

Déploiement et validation des modèles

Utilisez la commande Azure CLI az deployment group create pour déployer un modèle dans un groupe de ressources. Avant de déployer en production, exécutez az deployment group validate pour détecter les erreurs de schéma et de logique, puis az deployment group what-if pour prévisualiser les modifications apportées aux ressources. Ces trois commandes constituent un pipeline de déploiement sûr : valider, prévisualiser, déployer.

# Step 1: Validate the template syntax
az deployment group validate \
  --resource-group MyRG \
  --template-file azuredeploy.json \
  --parameters @dev.parameters.json

# Step 2: Preview changes
az deployment group what-if \
  --resource-group MyRG \
  --template-file azuredeploy.json \
  --parameters @dev.parameters.json

# Step 3: Deploy
az deployment group create \
  --resource-group MyRG \
  --template-file azuredeploy.json \
  --parameters @dev.parameters.json

Bonnes pratiques pour les modèles ARM

Suivez ces bonnes pratiques pour les modèles ARM : utilisez des paramètres pour les valeurs propres à l'environnement, utilisez des variables pour éviter les répétitions, figez les versions d'API sur des versions stables, utilisez secureString pour les mots de passe, ajoutez des descriptions de métadonnées aux paramètres et séparez les modèles volumineux en modules liés. Stockez les modèles dans un dépôt Git et déployez-les au moyen d'un pipeline CI/CD pour garantir leur traçabilité.

Vérification rapide

Vérifiez votre compréhension des concepts Microsoft Azure Fundamentals (AZ-900) abordés dans cette leçon.

Récapitulatif de la leçon

Dans cette leçon, vous avez appris que les modèles ARM sont des documents JSON qui définissent de manière déclarative l'infrastructure Azure, que les paramètres et variables rendent les modèles réutilisables et faciles à maintenir, et que le processus validate, what-if, deploy permet des déploiements sûrs et reproductibles. Nous allons maintenant découvrir Bicep, une abstraction moderne du code JSON ARM.

Questions Fréquemment Posées

La leçon « Écriture de modèles ARM » est-elle gratuite ?

Oui — le texte complet de « Écriture de modèles ARM » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Écriture de modèles ARM » ?

Créez dans JSON un modèle ARM paramétré pour déployer un compte de stockage et une VM, puis utilisez des fonctions et des variables de modèle pour rendre vos modèles réutilisables. Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?

Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Écriture de modèles ARM » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?

Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fonctionnement d’Azure Resource Manager
  2. Écriture de modèles ARM
  3. Bicep : l’IaC Azure moderne
  4. Terraform sur Azure
← Retour à Cloud & IT Cert Prep