Exercice : ajoutez des paramètres et des sorties à votre modèle Azure Resource Manager

Effectué

Dans cet exercice, vous ajoutez un paramètre pour définir le nom du compte de stockage Azure lors du déploiement. Vous ajoutez ensuite un paramètre pour définir les référence SU de compte de stockage que vous autorisez et définissez celle à utiliser pour ce déploiement. Vous ajoutez également une fonction utile au modèle Azure Resource Manager (modèle ARM) en ajoutant une sortie que vous pouvez utiliser plus tard dans le processus de déploiement.

Créer des paramètres pour le modèle ARM

Ici, vous rendez votre modèle ARM plus flexible en ajoutant des paramètres qui peuvent être définis au moment de l’exécution. Créez un paramètre pour la valeur storageName.

  1. Dans le fichier azuredeploy.json dans Visual Studio Code, mettez à jour "parameters":{},, de sorte qu’il ressemble à :

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    

    Pour mettre en forme correctement le fichier JSON, appuyez sur Alt+Maj+F.

  2. Utilisez le nouveau paramètre dans le bloc resources dans les valeurs name et displayName. Le fichier complet ressemble à cet exemple de code :

    {
      "$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,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  3. Enregistrez le fichier.

Déployer le modèle ARM paramétré

Ici, vous modifiez le nom du déploiement pour mieux refléter ce que fait ce déploiement et renseignez une valeur pour le nouveau paramètre.

Exécutez les commandes Azure CLI suivantes dans le terminal. Ce script est identique à celui que vous avez utilisé précédemment, sauf que le nom du déploiement a été modifié. Entrez une valeur unique pour le storageName paramètre. Il doit être globalement unique dans Azure, contenir 3 à 24 caractères et inclure uniquement des lettres minuscules, des chiffres et des traits d’union. Vous pouvez réutiliser le nom unique que vous avez créé dans l’unité précédente ; si vous le faites, Azure met à jour la ressource existante au lieu de en créer une nouvelle.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile \
  --parameters storageName={your-unique-name}

Exécutez les commandes Azure PowerShell suivantes dans le terminal. Ce script est identique à celui que vous avez utilisé précédemment, sauf que le nom du déploiement a été modifié. Entrez une valeur unique pour le storageName paramètre. Il doit être globalement unique dans Azure, contenir 3 à 24 caractères et inclure uniquement des lettres minuscules, des chiffres et des traits d’union. Vous pouvez réutiliser le nom unique que vous avez créé dans l’unité précédente ; si vous le faites, Azure met à jour la ressource existante au lieu de en créer une nouvelle.

$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storageName {your-unique-name}

Vérifier votre déploiement

  1. Une fois le déploiement terminé, revenez au portail Azure dans votre navigateur. Accédez à votre groupe de ressources et vérifiez qu’il y a maintenant 3 déploiements réussis. Sélectionnez ce lien.

    Notez que les trois déploiements se trouvent dans la liste.

  2. Explorez le déploiement addnameparameter comme vous l’avez fait précédemment.

Ajouter un autre paramètre qui limite les valeurs autorisées

Ici, vous utilisez des paramètres pour limiter les valeurs autorisées pour un paramètre.

  1. Ajoutez un nouveau paramètre nommé storageSKU à la parameters section du fichier azuredeploy.json .

    // This is the allowed values for an Azure storage account
    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    La première ligne est un commentaire. Les modèles ARM prennent en charge les commentaires // et /* */.

  2. Mettez à jour la section resources de façon à ce qu’elle utilise le paramètre storageSKU. Si vous tirez parti de la fonctionnalité IntelliSense de Visual Studio Code, elle facilite cette étape.

    "sku": {
         "name": "[parameters('storageSKU')]"
       }
    

    Le fichier complet ressemble à cet exemple de code :

    {
      "$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,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        },
        "storageSKU": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": [
            "Standard_LRS",
            "Standard_GRS",
            "Standard_RAGRS",
            "Standard_ZRS",
            "Premium_LRS",
            "Premium_ZRS",
            "Standard_GZRS",
            "Standard_RAGZRS"
          ]
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  3. Enregistrez le fichier.

Déployer le modèle ARM

Ici, vous effectuez un déploiement réussi en utilisant un paramètre storageSKU qui se trouve dans la liste autorisée. Ensuite, vous essayez de déployer le modèle en utilisant un paramètre storageSKU qui ne figure pas dans la liste autorisée. Le deuxième déploiement échoue comme prévu.

  1. Déployez le modèle en exécutant les commandes suivantes. Renseignez un nom unique pour le paramètre storageName. Il doit être globalement unique dans Azure, contenir 3 à 24 caractères et inclure uniquement des lettres minuscules, des chiffres et des traits d’union. Vous pouvez réutiliser le nom unique que vous avez créé dans l’unité précédente ; si vous le faites, Azure met à jour la ressource existante au lieu de en créer une nouvelle.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_GRS storageName={your-unique-name}
    

    Laissez le déploiement se terminer. Ce déploiement est correctement effectué. Votre liste de valeurs autorisées empêchent les utilisateurs de votre modèle de transmettre des valeurs de paramètre qui ne fonctionnent pas pour la ressource. Voyons ce qui se passe lorsque vous fournissez une référence SKU non valide.

  2. Exécutez les commandes suivantes pour déployer le modèle avec un paramètre qui n’est pas autorisé. Ici, vous avez changé le paramètre storageSKU en Basic (De base). Renseignez un nom unique pour le paramètre storageName. Il doit être globalement unique dans Azure, contenir 3 à 24 caractères et inclure uniquement des lettres minuscules, des chiffres et des traits d’union. Vous pouvez réutiliser le nom unique que vous avez créé dans l’unité précédente ; si vous le faites, Azure met à jour la ressource existante au lieu de en créer une nouvelle.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Basic storageName={your-unique-name}
    

    Échec de ce déploiement. Notez l’erreur.

    Capture d’écran de la fenêtre de terminal montrant l’erreur de validation du déploiement.

  1. Déployez le modèle en exécutant les commandes suivantes. Renseignez un nom unique pour le paramètre storageName. Il doit être globalement unique dans Azure, contenir 3 à 24 caractères et inclure uniquement des lettres minuscules, des chiffres et des traits d’union. Vous pouvez réutiliser le nom unique que vous avez créé dans l’unité précédente ; si vous le faites, Azure met à jour la ressource existante au lieu de en créer une nouvelle.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_GRS
    

    Laissez le déploiement se terminer. Ce déploiement est correctement effectué. Votre liste de valeurs autorisées empêchent les utilisateurs de votre modèle de transmettre des valeurs de paramètre qui ne fonctionnent pas pour la ressource. Voyons ce qui se passe lorsque vous fournissez une référence SKU non valide.

  2. Exécutez les commandes suivantes pour déployer le modèle avec un paramètre qui n’est pas autorisé. Ici, vous avez changé le paramètre storageSKU en Basic (De base). Renseignez un nom unique pour le paramètre storageName. Il doit être globalement unique dans Azure, contenir 3 à 24 caractères et inclure uniquement des lettres minuscules, des chiffres et des traits d’union. Vous pouvez réutiliser le nom unique que vous avez créé dans l’unité précédente ; si vous le faites, Azure met à jour la ressource existante au lieu de en créer une nouvelle.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Basic
    

    Échec de ce déploiement. Notez l’erreur.

    Capture d’écran de la fenêtre de terminal montrant l’erreur de validation du déploiement.

Ajouter une sortie au modèle ARM

Ici, vous faites un ajout à la section outputs du modèle ARM pour produire une sortie des points de terminaison pour la ressource de compte de stockage.

  1. Dans le fichier azuredeploy.json dans Visual Studio Code, mettez à jour "outputs":{}, pour qu’il ressemble à ceci :

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    }
    
  2. Enregistrez le fichier.

Déployer le modèle ARM avec une sortie

Ici, vous déployez le modèle et voyez la sortie des points de terminaison au format JSON. Vous devez renseigner un nom unique pour le paramètre storageName. Il doit être globalement unique dans Azure, contenir 3 à 24 caractères et inclure uniquement des lettres minuscules, des chiffres et des traits d’union. Vous pouvez réutiliser le nom unique que vous avez créé dans l’unité précédente ; si vous le faites, Azure met à jour la ressource existante au lieu de en créer une nouvelle.

  1. Déployez le modèle en exécutant les commandes suivantes. Veillez à remplacer {your-unique-name} par une chaîne qui est unique.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addoutputs-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_LRS storageName={your-unique-name}
    

    Notez le résultat.

    Capture d’écran de la fenêtre de terminal montrant les points de terminaison principaux en sortie au format JSON.

  1. Déployez le modèle en exécutant les commandes suivantes. Veillez à remplacer {your-unique-name} par une chaîne qui est unique.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addOutputs-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_LRS
    

    Notez le résultat.

    Capture d’écran de la fenêtre de terminal montrant les points de terminaison principaux en sortie au format JSON.

Vérifier votre déploiement de sortie

Dans le portail Azure, accédez à votre déploiement addOutputs. Vous pouvez également y trouver votre sortie.

Capture d’écran du portail Azure montrant la sélection de sortie dans le menu de gauche.