Exercice : utiliser des balises Azure Resource Manager et des fichiers de paramètres

Effectué

Dans cet exercice, vous ajoutez des étiquettes pour faciliter l’organisation et le suivi de vos ressources Microsoft Azure. Vous utilisez aussi un fichier de paramètres de modèle Azure Resource Manager (ARM) pour permettre des configurations différentes des paramètres pour chaque déploiement.

Cet exercice utilise les Outils Azure Resource Manager pour Visual Studio Code. Assurez-vous d’installer cette extension dans Visual Studio Code.

Créer une balise pour suivre l’environnement et le projet de déploiement des ressources

Pour commencer, vous créez un paramètre à utiliser comme étiquette de ressource dans votre modèle.

  1. Dans Visual Studio Code, dans le fichier azuredeploy.json, placez votre curseur après l’accolade fermante pour le paramètre storageSKU. Ajoutez une virgule et appuyez sur Entrée.

  2. Tapez par. Une liste d’extraits associés s’affiche.

  3. Sélectionnez arm-param. Rappelez-vous : cette action ajoute un paramètre générique au modèle. Elle se présente comme ce code :

    "parameter1": {
        "type": "string",
        "metadata": {
            "description": "description"
        }
    
  4. Remplacez parameter1 par resourceTags et la valeur de "type": par object. Rappelez-vous que les paramètres peuvent être des types de données string, secureString, int, bool, object, secureObject et array. Vous trouverez un lien vers l’exemple de syntaxe pour ces types de paramètres dans le récapitulatif de ce module.

  5. Ajoutez un attribut nommé defaultValue: et définissez la valeur sur {"Environment": "Dev", "Project": "Tutorial"}.

    Le bloc des paramètres doit se présenter comme ce code :

    "parameters": {
        "storagePrefix": {
            "type": "string",
            "minLength": 3,
            "maxLength": 11
        },
        "storageSKU": {
            "type": "string",
            "defaultValue": "Standard_LRS",
            "allowedValues": [
                "Standard_LRS",
                "Standard_GRS",
                "Standard_RAGRS",
                "Standard_ZRS",
                "Premium_LRS",
                "Premium_ZRS",
                "Standard_GZRS",
                "Standard_RAGZRS"
            ]
        },
        "resourceTags": {
        "type": "object",
        "defaultValue": {
            "Environment": "Dev",
            "Project": "Tutorial"
            }
        }
    },
    
  6. Utilisez ce paramètre pour étiqueter votre ressource de compte de stockage. Modifiez l’attribut tags: dans la définition de ressource :

    "tags": "[parameters('resourceTags')]",
    
  7. Votre fichier doit se présenter comme suit :

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
           "storagePrefix": {
               "type": "string",
               "minLength": 3,
               "maxLength": 11
           },
            "storageSKU": {
                "type": "string",
                "defaultValue": "Standard_LRS",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS",
                    "Standard_RAGRS",
                    "Standard_ZRS",
                    "Premium_LRS",
                    "Premium_ZRS",
                    "Standard_GZRS",
                    "Standard_RAGZRS"
                ]
            },
            "resourceTags": {
            "type": "object",
            "defaultValue": {
                "Environment": "Dev",
                "Project": "Tutorial"
            }
        }
       },
        "functions": [],
        "variables": {
        "uniqueStorageName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"
      },
        "resources": [{
            "name": "[variables('uniqueStorageName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-06-01",
            "tags": "[parameters('resourceTags')]",
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
        "outputs": {}
    }
    
  8. Enregistrez le fichier.

Déployer le modèle ARM avec des balises mises à jour

  • Déployer le modèle ARM mis à jour sur Azure. Veillez à utiliser le même storagePrefix que celui utilisé auparavant.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="updateTags-"$today
    
    az deployment group create \
        --name $DeploymentName \
        --template-file $templateFile \
        --parameters storagePrefix={your-Prefix} storageSKU=Standard_LRS
    
  • Déployez le modèle ARM mis à jour sur Azure. Veillez à utiliser le même storagePrefix que celui utilisé auparavant.

    $templateFile = "azuredeploy.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="updateTags-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storagePrefix {your storagePrefix} `
      -storageSKU Standard_LRS
    

Vérifier que les nouvelles étiquettes sont dans le déploiement

  1. Dans Azure, sélectionnez le groupe de ressources [nom du groupe de ressources de bac à sable], puis sélectionnez le compte de stockage que vous avez déployé.

  2. Notez les balises Environment : Dev et Project : Tutorial :

    Screenshot of the Azure portal that shows the selected tags in the Storage account Overview page.

Utiliser un fichier de paramètres

Il y a actuellement trois paramètres à renseigner chaque fois que vous déployez ce modèle. Chaque utilisateur du modèle peut créer un fichier pour contenir ses valeurs de paramètre. Ici, vous créez un fichier de paramètres à utiliser avec votre modèle.

  1. Dans Visual Studio Code, créez un autre fichier. Appelez-le azuredeploy.parameters.dev.json.

  2. Dans ce fichier, vous ajoutez les valeurs des paramètres du modèle que vous voulez entrer dans le modèle pour l’environnement de développement. Changez la valeur d’une étiquette pour voir que le déploiement apporte une modification. Par exemple, vous pouvez changer projectName en Learn :

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storagePrefix": {
          "value": "{unique-prefix}"
        },
        "storageSKU": {
          "value": "Standard_LRS"
        },
        "resourceTags": {
          "value": {
            "Environment": "Dev",
            "Project": "Learn"
          }
        }
      }
    }
    
  3. Veillez à remplacer {unique-prefix} par votre préfixe unique.

  4. Enregistrez le fichier.

Déployer le modèle avec le fichier de paramètres

Dans cette section, vous déployez le modèle ARM en spécifiant le fichier de paramètres à utiliser.

  1. Dans le terminal Visual Studio Code, exécutez ces commandes Azure CLI :

    templateFile="azuredeploy.json"
    devParameterFile="azuredeploy.parameters.dev.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addParameterFile-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters $devParameterFile
    
  2. Vérifiez que le déploiement a réussi dans Azure et que la valeur de l’étiquette a changé :

    Screenshot of the Azure portal that shows the updated tag values in the Storage account Overview page.

  3. En guise de défi, créez un fichier de paramètres pour l’environnement de production. Changez le chemin du fichier de paramètres quand vous exécutez la commande pour déployer sur l’environnement de production.

  1. Dans le terminal Visual Studio Code, exécutez ces commandes Azure PowerShell :

    $templateFile = "azuredeploy.json"
    $parameterFile="azuredeploy.parameters.dev.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addParameterFile-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -TemplateParameterFile $parameterFile
    
  2. Vérifiez que le déploiement a réussi dans Azure et que la valeur de l’étiquette a changé :

    Screenshot of the Azure portal that shows the updated tag values in the Storage account Overview page.

  3. En guise de défi, créez un fichier de paramètres pour l’environnement de production. Changez le chemin du fichier de paramètres quand vous exécutez la commande pour déployer sur l’environnement de production.