Exercice - Utiliser copy pour réduire les répétitions

Effectué

Dans cet exercice final, vous continuez à travailler avec des comptes de stockage. Cette fois, vous utilisez la construction copy pour provisionner plusieurs comptes de stockage à partir d’une seule définition.

Copy vous donne un seul emplacement central que vous devez mettre à jour quand vos besoins changent.

Créer le modèle ARM

Ici, vous créez un modèle ARM (Azure Resource Manager) qui définit une ressource de compte de stockage. Le modèle utilise copy pour créer des versions similaires de la même ressource un nombre spécifique de fois.

  1. Dans Visual Studio Code, créez un fichier nommé copy.json dans le même répertoire que celui qui contient azuredeploy.json.

  2. Ajoutez ces contenus à copy.json :

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageCount": {
          "type": "int",
          "defaultValue": 1,
          "metadata": {
            "description": "the number of storage accounts copies being deployed"
          }
        },
        "storageAccountName": {
          "type": "string",
          "defaultValue": "storage",
          "metadata": {
            "description": "the name of the storage account"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[concat(parameters('storageAccountName'), copyIndex())]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "storageaccount1"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Premium_LRS",
            "tier": "Premium"
          },
          "copy": {
            "name": "storagecopy",
            "count": "[parameters('storageCount')]"
          }
        }
      ],
      "outputs": {}
    }
    

Le paramètre storageCount définit le nombre de copies à créer.

Sous resources, notez la ressource du compte de stockage. Pour que le nom du compte de stockage soit unique, le modèle utilise copyIndex() pour ajouter l’index actuel au nom du compte de stockage.

La section copy lit le nombre de copies à effectuer à partir du paramètre storageCount.

Déployer le modèle

Ici, vous déployez le modèle comme vous l’avez fait précédemment. L’étape de déploiement configure deux comptes de stockage similaires.

  1. Créez une variable PowerShell qui contient le nom du compte de stockage.

    $STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
    
  2. Pour déployer le modèle, exécutez la commande New-AzResourceGroupDeployment suivante :

    New-AzResourceGroupDeployment `
    -TemplateFile "./copy.json" `
    -storageAccountName $STORAGE_ACCT_NAME `
    -storageCount 2
    

    Ici, vous affectez à storageCount la valeur 2 pour provisionner deux comptes de stockage.

Vérifier le déploiement

Bien que la sortie indique que deux comptes de stockage ont été créés, vous exécutez ici la commande Get-AzResource pour vous concentrer sur les ressources de sortie.

Exécutez la commande Get-AzResource suivante pour vous assurer que les ressources ont été déployées :

Get-AzResource -Name tailwindsa* -ResourceGroupName <rgn>resource group name</rgn> | Select-Object -Property Name,ResourceId

L’argument tailwindsa* indique d’afficher uniquement les identificateurs correspondant au préfixe de nom que vous avez donné aux ressources.

Votre sortie ressemble à ceci :

Name                 ResourceId
----                 ----------
tailwindsa1852777810 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…
tailwindsa1852777811 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…

Dans cet exemple :

  • tailwindsa185277781 est le nom de base qui a été généré pour le compte de stockage ("tailwindsa" + Get-Random -Count 1).
  • tailwindsa1852777810 (le nom de base plus « 0 ») est le premier compte de stockage.
  • tailwindsa1852777811 (le nom de base plus « 1 ») est le deuxième compte de stockage.

Beau travail ! À mesure que vos besoins évoluent, comme le niveau de performance dont vous avez besoin, vous pouvez modifier vos définitions de ressources à partir d’un emplacement unique.

Nettoyage

Le bac à sable nettoie automatiquement vos ressources une fois que vous avez terminé ce module.

Il est important de vérifier à la fin d'un projet si les ressources que vous avez créées sont toujours nécessaires. Les ressources en fonctionnement peuvent engendrer des coûts supplémentaires. Vous pouvez supprimer les ressources individuellement, ou supprimer le groupe de ressources pour supprimer l’ensemble des ressources.

Créer le modèle ARM

Ici, vous créez un modèle ARM (Azure Resource Manager) qui définit une ressource de compte de stockage. Le modèle utilise copy pour créer des versions similaires de la même ressource un nombre spécifique de fois.

  1. Dans Visual Studio Code, créez un fichier nommé copy.json dans le même répertoire que celui qui contient azuredeploy.json.

  2. Ajoutez ces contenus à copy.json :

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "storageCount": {
          "type": "int",
          "defaultValue": 1,
          "metadata": {
            "description": "the number of storage accounts being deployed"
          }
        },
        "storageAccountName": {
          "type": "string",
          "defaultValue": "storage",
          "metadata": {
            "description": "the name of the storage account"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "name": "[concat(parameters('storageAccountName'), copyIndex())]",
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2019-06-01",
          "tags": {
            "displayName": "storageaccount1"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Premium_LRS",
            "tier": "Premium"
          },
          "copy": {
            "name": "storagecopy",
            "count": "[parameters('storageCount')]"
          }
        }
      ],
      "outputs": {}
    }
    

Le paramètre storageCount définit le nombre de copies à créer.

Sous resources, notez la ressource du compte de stockage. Pour que le nom du compte de stockage soit unique, le modèle utilise copyIndex() pour ajouter l’index actuel au nom du compte de stockage.

La section copy lit le nombre de copies à effectuer à partir du paramètre storageCount.

Déployer le modèle

Ici, vous déployez le modèle comme vous l’avez fait précédemment. L’étape de déploiement configure deux comptes de stockage similaires.

  1. Créez une variable bash qui contient le nom du compte de stockage.

    STORAGE_ACCT_NAME=tailwindsa$RANDOM
    
  2. Pour déployer le modèle, exécutez la commande az deployment group create suivante :

    az deployment group create \
      --template-file copy.json \
      --parameters storageAccountName=$STORAGE_ACCT_NAME storageCount=2
    

    Ici, vous affectez à storageCount la valeur 2 pour provisionner deux comptes de stockage.

Vérifier le déploiement

Bien que la sortie indique que deux comptes de stockage ont été créés, vous exécutez ici la commande az deployment group show pour vous concentrer sur les ressources de sortie.

Exécutez la commande az deployment group show suivante pour afficher les détails relatifs au déploiement :

az deployment group show \
  --name copy \
  --query "properties.outputResources[].id" \
  --output tsv

L’argument --query indique d’afficher uniquement les identificateurs des ressources de sortie.

Votre sortie ressemble à ceci :

/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9820
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9821

Dans cet exemple :

  • tailwindsa982 est le nom de base qui a été généré pour le compte de stockage (tailwindsa$RANDOM).
  • tailwindsa9820 (le nom de base plus « 0 ») est le premier compte de stockage.
  • tailwindsa9821 (le nom de base plus « 1 ») est le deuxième compte de stockage.

Beau travail ! À mesure que vos besoins évoluent, comme le niveau de performance dont vous avez besoin, vous pouvez modifier vos définitions de ressources à partir d’un emplacement unique.

Nettoyage

Le bac à sable nettoie automatiquement vos ressources une fois que vous avez terminé ce module.

Il est important de vérifier à la fin d'un projet si les ressources que vous avez créées sont toujours nécessaires. Les ressources en fonctionnement peuvent engendrer des coûts supplémentaires. Vous pouvez supprimer les ressources individuellement, ou supprimer le groupe de ressources pour supprimer l’ensemble des ressources.