Partager via


Tutoriel : Ajouter des paramètres à votre modèle ARM

Dans le tutoriel précédent, vous avez appris à ajouter un compte de stockage Azure au modèle et à le déployer. Dans ce tutoriel, vous allez apprendre à améliorer le modèle Azure Resource Manager (modèle ARM) en lui ajoutant des paramètres. Cette instruction prend 14 minutes.

Prérequis

Nous vous recommandons de suivre le tutoriel sur les ressources, mais il n’est pas obligatoire.

Visual Studio Code doit être installé et compatible avec l’extension Azure Resource Manager Tools et, au choix, Azure PowerShell ou l’interface de ligne de commande Azure (CLI). Pour plus d’informations, consultez les outils de modèle.

Vérifier le modèle

À la fin du précédent tutoriel, votre modèle présente le fichier JSON suivant :

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Vous remarquez peut-être d’ailleurs que ce modèle a un problème. Le nom du compte de stockage est codé en dur. Vous pouvez utiliser ce modèle uniquement pour déployer le même compte de stockage à chaque fois. Pour déployer un compte de stockage avec un nom différent, vous devez créer un nouveau modèle, ce qui n’est évidemment pas un moyen pratique d’automatiser vos déploiements.

Rendre le modèle réutilisable

Vous pouvez réutiliser votre modèle en ajoutant un paramètre que vous définissez pour transmettre un nom de compte de stockage. Le fichier JSON mis en évidence dans l’exemple suivant montre les changements dans votre modèle. Le paramètre storageName est identifié en tant que chaîne. Le nom du compte de stockage est en lettres minuscules ou en nombres et il est limité à 24 caractères.

Copiez l’intégralité du fichier et remplacez votre modèle par son contenu.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Déployer un modèle

Déployons le modèle. L’exemple suivant déploie le modèle avec Azure CLI ou PowerShell. Notez que vous fournissez le nom du compte de stockage en tant que valeur dans la commande de déploiement. En guise de nom de compte de stockage, indiquez le nom que vous avez utilisé dans le tutoriel précédent.

Si vous n’avez pas créé le groupe de ressources, consultez Créer un groupe de ressources. L’exemple suppose que vous affectez à la variable templateFile le chemin d’accès du fichier de modèle, comme indiqué dans le premier tutoriel.

New-AzResourceGroupDeployment `
  -Name addnameparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Comprendre les mises à jour des ressources

Après avoir déployé un compte de stockage avec même nom que celui que vous avez utilisé précédemment, vous pouvez vous demander comment le redéploiement affecte la ressource.

Si la ressource existe déjà et qu’aucune modification n’est apportée aux propriétés, aucune autre action n’est nécessaire. Si la ressource existe et qu’une propriété change, elle est mise à jour. Si la ressource n’existe pas, elle est créée.

Cette façon de gérer les mises à jour signifie que votre modèle peut inclure toutes les ressources dont vous avez besoin pour une solution Azure. Vous pouvez redéployer le modèle en toute sécurité, sachant que les ressources sont modifiées ou créées uniquement lorsque cela est nécessaire. Si vous ajoutez des fichiers à votre compte de stockage, par exemple, vous pouvez redéployer le compte de stockage sans perdre les fichiers.

Personnaliser par environnement

Les paramètres vous permettent de personnaliser le déploiement grâce à des valeurs qui sont adaptées à un environnement particulier. Vous pouvez passer des valeurs différentes, par exemple, selon que vous déployez dans un environnement de développement, de test ou de production.

Le modèle précédent déploie toujours un compte de stockage localement redondant (LRS) Standard_LRS. Vous pouvez souhaiter avoir le choix de déployer différentes références SKU en fonction de l’environnement. L’exemple suivant montre les modifications apportées pour ajouter un paramètre de référence (SKU). Copiez l’intégralité du fichier et collez-le à la place de votre modèle.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Le paramètre storageSKU possède une valeur par défaut. Utilisez cette valeur lorsque le déploiement ne le spécifie pas. Il présente également une liste de valeurs autorisées. Ces valeurs correspondent aux valeurs nécessaires à la création d’un compte de stockage. Vous souhaitez que les utilisateurs de votre modèle passe des références SKU applicables.

Redéployer le modèle

Vous êtes prêt à déployer de nouveau. La référence SKU par défaut étant définie sur Standard_LRS, vous avez déjà fourni une valeur de paramètre.

New-AzResourceGroupDeployment `
  -Name addskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Notes

En cas d’échec du déploiement, utilisez le commutateur verbose pour obtenir des informations sur les ressources créées. Utilisez le commutateur debug pour obtenir des informations supplémentaires sur le débogage.

Pour voir la flexibilité de votre modèle, redéployons-le. Cette fois, définissez le paramètre SKU sur le stockage géoredondant standard (GRS) Standard_GRS. Vous pouvez soit passer un nouveau nom pour créer un compte de stockage différent, soit utiliser le même nom pour mettre à jour votre compte de stockage existant. Les deux options fonctionnent.

New-AzResourceGroupDeployment `
  -Name usenondefaultsku `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU Standard_GRS

Pour finir, nous allons exécuter un test supplémentaire et voir ce qui se passe lorsque vous transmettez une référence qui ne fait pas partie des valeurs autorisées. Dans ce cas, nous testons le scénario dans lequel l’utilisateur de votre modèle pense que basic fait partie des références SKU.

New-AzResourceGroupDeployment `
  -Name testskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU basic

La commande échoue avec un message d’erreur qui indique les valeurs autorisées. Le processeur ARM trouve l’erreur avant le démarrage du déploiement.

Nettoyer les ressources

Si vous passez au tutoriel suivant, vous n’avez pas besoin de supprimer le groupe de ressources.

Si vous arrêtez maintenant, vous pouvez nettoyer vos ressources déployées en supprimant le groupe de ressources.

  1. Dans le portail Azure, sélectionnez Groupe de ressources dans le menu de gauche.
  2. Tapez le nom du groupe de ressources dans la zone de texte Filtre pour n’importe quel champ....
  3. Cochez la case en regard de myResourceGroup et sélectionnez myResourceGroup ou le nom de votre groupe de ressources.
  4. Sélectionnez Supprimer le groupe de ressources dans le menu supérieur.

Étapes suivantes

Vous avez amélioré le modèle que vous avez créé dans le premier tutoriel en ajoutant des paramètres. Dans le tutoriel suivant, vous découvrez les fonctions de modèle.