Partager via


Tutoriel : Ajouter des fonctions de modèle à votre modèle ARM

Dans ce tutoriel, vous allez apprendre à ajouter des fonctions de modèle à votre modèle Azure Resource Manager (modèle ARM). Vous utilisez des fonctions pour élaborer des valeurs de façon dynamique. Outre ces fonctions de modèle fournies par le système, vous pouvez aussi créer des fonctions définies par l’utilisateur. Ce tutoriel dure environ 7 minutes.

Prérequis

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

Visual Studio Code doit être installé et être compatible avec l’extension Azure Resource Manager Tools et, au choix, Azure PowerShell ou 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ésentait le fichier JSON suivant :

{
  "$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
      }
    }
  ]
}

Supposons que vous avez codé en dur l’emplacement du compte de stockage Azure sur eastus, mais que vous devez le déployer dans une autre région. Vous devez ajouter un paramètre pour ajouter de la flexibilité à votre modèle et lui permettre d’avoir un autre emplacement.

Utiliser une fonction

Si vous avez suivi le tutoriel sur les paramètres, vous avez utilisé une fonction. Quand vous avez ajouté "[parameters('storageName')]" , vous avez utilisé la fonction parameters. Les crochets indiquent que la syntaxe à l’intérieur des crochets est une expression de modèle. Resource Manager résout la syntaxe plutôt que de la traiter en tant que valeur littérale.

Les fonctions ajoutent de la flexibilité à votre modèle en obtenant de manière dynamique des valeurs pendant le déploiement. Dans ce tutoriel, vous utilisez une fonction pour obtenir l’emplacement de déploiement du groupe de ressources.

L’exemple suivant met en évidence les modifications à apporter pour ajouter un paramètre appelé location. La valeur par défaut du paramètre appelle la fonction resourceGroup. Cette fonction retourne un objet avec des informations sur le groupe de ressources déployé. L’une des propriétés de l’objet est une propriété d’emplacement. Lorsque vous utilisez la valeur par défaut, le compte de stockage et le groupe de ressources ont le même emplacement. Les ressources à l’intérieur d’un groupe ont des emplacements différents.

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
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Déployer un modèle

Dans les tutoriels précédents, vous avez créé un compte de stockage dans la région USA Est, mais votre groupe de ressources est créé dans USA Centre. Pour les besoins de ce tutoriel, vous créez un compte de stockage dans la même région que le groupe de ressources. Utilisez la valeur par défaut pour location, afin de ne pas avoir à fournir cette valeur de paramètre. Vous devez indiquer un nouveau nom pour le compte de stockage, car vous créez un compte de stockage à un autre emplacement. Utilisez store2, par exemple, comme préfixe au lieu de store1.

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

New-AzResourceGroupDeployment `
  -Name addlocationparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{new-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.

Vérifier le déploiement

Vous pouvez vérifier le déploiement en explorant le groupe de ressources à partir du portail Azure.

  1. Connectez-vous au portail Azure.
  2. Dans le menu de gauche, sélectionnez Groupes de ressources.
  3. Cochez la case à gauche de myResourceGroup et sélectionnez myResourceGroup.
  4. Sélectionnez le groupe de ressources que vous avez créé. Le nom par défaut est myResourceGroup.
  5. Notez que votre compte de stockage déployé et votre groupe de ressources ont le même emplacement.

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 supprimer le groupe de ressources.

  1. Dans le portail Azure, sélectionnez Groupes 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

Dans ce tutoriel, vous utilisez une fonction pour définir la valeur par défaut d’un paramètre. Dans cette série de tutoriels, vous continuez à utiliser des fonctions. À la fin de la série, vous ajoutez des fonctions à chaque section du modèle.