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, placez votre curseur entre les accolades dans l’attribut parameters. Il se présente comme ceci : "parameters":{},

  2. Sélectionnez Entrée, puis entrez par. Une liste d’extraits associés s’affiche. Choisissez new-parameter, qui ajoute un paramètre générique au modèle. La réponse ressemble à cet exemple :

     "parameters": {
        "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
      }
    },
    
  3. Modifiez le paramètre en remplaçant parameter1 par storageName et laissez chaîne comme type. Ajoutez une valeur minLength de 3 et une valeur maxLength de 24. Ajoutez comme valeur de la description The name of the Azure storage resource (Le nom de la ressource de stockage Azure).

  4. Le bloc des paramètres doit maintenant ressembler à cet exemple :

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    
  5. 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": "2023-05-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  6. 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. Cet extrait de code contient le même code que celui utilisé précédemment, mais le nom du déploiement est changé. Renseignez un nom unique pour le paramètre storageName. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière unité. Dans ce cas, Azure met à jour la ressource au lieu d’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. Cet extrait de code contient le même code que celui utilisé précédemment, mais le nom du déploiement est changé. Renseignez un nom unique pour le paramètre storageName. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière unité. Dans ce cas, Azure met à jour la ressource au lieu d’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. Placez le curseur après l’accolade fermante pour le paramètre storageName. Ajoutez une virgule, puis sélectionnez Entrée.

  2. Entrez à nouveau par et sélectionnez new-parameter.

  3. Remplacez le nouveau paramètre générique par le code suivant :

    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    Ici, vous répertoriez les valeurs autorisées par ce paramètre. Si le modèle s’exécute avec une valeur non autorisée, le déploiement échoue.

  4. Ajoutez un commentaire à ce paramètre.

    Capture d’écran du fichier azuredeploy.json montrant le commentaire « This is the allowed values for an Azure storage account » sur la ligne au-dessus du paramètre storageSKU.

    Les modèles ARM prennent en charge les commentaires // et /* */.

  5. 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": "2023-05-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  6. 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. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’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. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’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. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’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. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’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, placez votre curseur entre les accolades dans l’attribut "outputs":{},.

  2. Sélectionnez Entrée, puis entrez out. Vous obtenez une liste d’extraits de code associés. Sélectionnez new-output. Ils ajoutent une sortie générique au modèle qui ressemble à cet exemple :

    "outputs": {
      "output1": {
        "type": "string",
        "value": "value"
      }
    
  3. Remplacez "output1" par "storageEndpoint", puis remplacez la valeur de type par "object". Remplacez la valeur de value par "[reference(parameters('storageName')).primaryEndpoints]". Cette expression est celle que nous avons décrite dans l’unité précédente, qui obtient les données du point de terminaison. Étant donné que nous avons spécifié objet comme type, l’objet est retourné au format JSON.

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    
  4. 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. Rappelez-vous que ce nom doit être unique dans tout Azure. Vous pouvez utiliser le nom unique que vous avez créé dans la dernière section. Dans ce cas, Azure met à jour la ressource au lieu d’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.