Exercice - Utiliser copy pour réduire les répétitions
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.
Dans Visual Studio Code, créez un fichier nommé copy.json dans le même répertoire que celui qui contient azuredeploy.json.
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.
Créez une variable PowerShell qui contient le nom du compte de stockage.
$STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
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 valeur2
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.
Dans Visual Studio Code, créez un fichier nommé copy.json dans le même répertoire que celui qui contient azuredeploy.json.
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.
Créez une variable bash qui contient le nom du compte de stockage.
STORAGE_ACCT_NAME=tailwindsa$RANDOM
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 valeur2
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.