Exercice - Prévisualiser les modifications avec la commande what-if
Notes
La première fois que vous activez un bac à sable et que vous acceptez les conditions d’utilisation, votre compte Microsoft est associé à un nouveau répertoire Azure appelé Microsoft Learn Sandbox (bac à sable Microsoft Learn). Vous êtes également ajouté à un abonnement spécial nommé Abonnement Concierge.
L’équipe de conception de votre entreprise de jouets vous a demandé de mettre à jour un modèle qui configure un réseau virtuel. Dans cette unité, vous utiliserez ce qui permet de vérifier les effets du déploiement du modèle mis à jour.
Pendant ce processus, vous allez :
- Créez et déployez un modèle initial.
- Préparez le déploiement d’un modèle légèrement différent, et utilisez l’opération de simulation pour passer en revue les modifications attendues.
- Utilisez un déploiement complet pour déployer un modèle vide et utilisez l’opération de simulation pour passer en revue les modifications attendues.
Cet exercice utilise les Outils Azure Resource Manager pour Visual Studio Code. Assurez-vous d’installer cette extension dans Visual Studio Code.
Cet exercice utilise l’extension Bicep pour Visual Studio Code. Assurez-vous d’installer cette extension dans Visual Studio Code.
Créer le modèle de départ
Vous démarrez avec un modèle existant que votre équipe utilise. Le modèle crée le réseau virtuel.
Ouvrez Visual Studio Code.
Créez un fichier nommé azuredeploy.json.
Enregistrez le fichier vide afin que Visual Studio Code charge les outils de modèle ARM.
Vous pouvez soit sélectionner Fichier>Enregistrer sous, soit Ctrl+S dans Windows (⌘+S sur macOS). Veillez à mémoriser l’emplacement où vous avez enregistré le fichier. Vous pouvez par exemple créer un dossier scripts pour l’y enregistrer.
Copiez le code suivant dans azuredeploy.json.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2024-01-01", "type": "Microsoft.Network/virtualNetworks", "name": "vnet-001", "location": "[resourceGroup().location]", "tags": { "CostCenter": "12345", "Owner": "Team A" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Enregistrez le modèle.
Ouvrez Visual Studio Code.
Créez un fichier nommé main.bicep.
Enregistrez le fichier vide afin que Visual Studio Code charge les outils Bicep.
Vous pouvez soit sélectionner Fichier>Enregistrer sous, soit Ctrl+S dans Windows (⌘+S sur macOS). Veillez à mémoriser l’emplacement où vous avez enregistré le fichier. Vous pouvez par exemple créer un dossier scripts pour l’y enregistrer.
Copiez le code suivant dans main.bicep.
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = { name: 'vnet-001' location: resourceGroup().location tags: { 'CostCenter': '12345' 'Owner': 'Team A' } properties: { addressSpace: { addressPrefixes: [ '10.0.0.0/16' ] } enableVmProtection: false enableDdosProtection: false subnets: [ { name: 'subnet001' properties: { addressPrefix: '10.0.0.0/24' } } { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ] } }
Enregistrez le modèle.
Déployer le modèle sur Azure
Pour déployer ce modèle sur Azure, connectez-vous à votre compte Azure à partir du terminal Visual Studio Code. Vérifiez que vous avez installé Azure PowerShell et connectez-vous au même compte que celui qui a activé le bac à sable.
Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.
Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est powershell ou pwsh, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.
Si un shell autre que powershell ou pwsh apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis PowerShell.
Dans la liste d’interpréteurs de commandes de terminal, sélectionnez powershell ou pwsh.
Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :
Set-Location -Path templates
Installer l’interface CLI Bicep
Pour utiliser Bicep à partir d’Azure PowerShell, installez l’interface CLI de Bicep.
Connectez-vous à Azure en utilisant Azure PowerShell
Dans le terminal Visual Studio Code, exécutez la commande suivante :
Connect-AzAccount
Un navigateur s’ouvre pour vous permettre de vous connecter à votre compte Azure.
Une fois que vous êtes connecté à Azure, le terminal affiche une liste des abonnements associés à ce compte.
Si vous avez activé le bac à sable, un abonnement appelé Abonnement Concierge s’affiche. Utilisez-le pour le reste de l’exercice.
Définissez l’abonnement par défaut pour toutes les commandes Azure PowerShell que vous exécutez dans cette session.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Notes
Si vous avez utilisé plusieurs bacs à sable récemment, le terminal risque d’afficher plusieurs instances de l’abonnement Concierge. Dans ce cas, utilisez les deux étapes suivantes pour en définir un comme l’abonnement par défaut. Si la commande précédente a réussi et qu’un seul abonnement Concierge est listé, ignorez les deux étapes suivantes.
Obtenir l’ID d’abonnement. L’exécution de la commande suivante liste vos abonnements et leurs ID. Recherchez
Concierge Subscription
, puis copiez l’ID de la deuxième colonne. Il doit ressembler à ceci :aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Remplacez votre abonnement actif par l’abonnement Concierge. Veillez à remplacer {Votre ID d’abonnement} par celui que vous avez copié.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Définir votre groupe de ressources par défaut
Vous pouvez définir le groupe de ressources par défaut et omettre le paramètre du reste des commandes Azure PowerShell dans cet exercice. Définissez ce paramètre par défaut sur le groupe de ressources créé pour vous dans l’environnement de bac à sable.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Pour déployer ce modèle sur Azure, vous devez vous connecter à votre compte Azure à partir du terminal Visual Studio Code. Veillez à installer Azure CLI sans oublier de vous connecter avec le même compte que celui utilisé pour activer le bac à sable.
Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.
Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est bash, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.
Si un interpréteur de commandes autre que bash apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis Azure Cloud Shell (Bash).
Dans la liste des interpréteurs de commandes de terminal, sélectionnez bash.
Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :
cd templates
Installer Bicep
Exécutez la commande suivante pour vous assurer de disposer de la dernière version de Bicep :
az bicep install && az bicep upgrade
Connexion à Azure
Dans le terminal Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :
az login
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Le terminal Visual Studio Code affiche la liste des abonnements associés à ce compte.
Définissez l’abonnement par défaut pour toutes les commandes Azure CLI que vous exécutez dans cette session.
az account set --subscription "Concierge Subscription"
Notes
Si vous avez utilisé plusieurs bacs à sable récemment, le terminal risque d’afficher plusieurs instances de l’abonnement Concierge. Dans ce cas, utilisez les deux étapes suivantes pour en définir un comme l’abonnement par défaut. Si la commande précédente a réussi et qu’un seul abonnement Concierge est listé, ignorez les deux étapes suivantes.
Obtenez les ID des abonnements Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Définissez l’abonnement par défaut en utilisant l’ID d’abonnement. Remplacez {your subscription ID} par l’ID du dernier abonnement Concierge.
az account set --subscription {your subscription ID}
Définir le groupe de ressources par défaut
Quand vous utilisez Azure CLI, vous pouvez définir le groupe de ressources par défaut et omettre le paramètre du reste des commandes Azure CLI dans cet exercice. Définissez le paramètre par défaut sur le groupe de ressources qui est créé pour vous dans l’environnement bac à sable.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Pour déployer ce modèle sur Azure, connectez-vous à votre compte Azure à partir du terminal Visual Studio Code. Vérifiez que vous avez installé Azure PowerShell et connectez-vous au même compte que celui qui a activé le bac à sable.
Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.
Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est powershell ou pwsh, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.
Si un shell autre que powershell ou pwsh apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis PowerShell.
Dans la liste d’interpréteurs de commandes de terminal, sélectionnez powershell ou pwsh.
Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :
Set-Location -Path templates
Connectez-vous à Azure en utilisant Azure PowerShell
Dans le terminal Visual Studio Code, exécutez la commande suivante :
Connect-AzAccount
Un navigateur s’ouvre pour vous permettre de vous connecter à votre compte Azure.
Une fois que vous êtes connecté à Azure, le terminal affiche une liste des abonnements associés à ce compte.
Si vous avez activé le bac à sable, un abonnement appelé Abonnement Concierge s’affiche. Utilisez-le pour le reste de l’exercice.
Définissez l’abonnement par défaut pour toutes les commandes Azure PowerShell que vous exécutez dans cette session.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Notes
Si vous avez utilisé plusieurs bacs à sable récemment, le terminal risque d’afficher plusieurs instances de l’abonnement Concierge. Dans ce cas, utilisez les deux étapes suivantes pour en définir un comme l’abonnement par défaut. Si la commande précédente a réussi et qu’un seul abonnement Concierge est listé, ignorez les deux étapes suivantes.
Obtenir l’ID d’abonnement. L’exécution de la commande suivante liste vos abonnements et leurs ID. Recherchez
Concierge Subscription
, puis copiez l’ID de la deuxième colonne. Il doit ressembler à ceci :aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Remplacez votre abonnement actif par l’abonnement Concierge. Veillez à remplacer {Votre ID d’abonnement} par celui que vous avez copié.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Définir votre groupe de ressources par défaut
Vous pouvez définir le groupe de ressources par défaut et omettre le paramètre du reste des commandes Azure PowerShell dans cet exercice. Définissez ce paramètre par défaut sur le groupe de ressources créé pour vous dans l’environnement de bac à sable.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Pour déployer ce modèle sur Azure, vous devez vous connecter à votre compte Azure à partir du terminal Visual Studio Code. Veillez à installer Azure CLI sans oublier de vous connecter avec le même compte que celui utilisé pour activer le bac à sable.
Dans le menu Terminal, sélectionnez Nouveau terminal. La fenêtre de terminal s’ouvre généralement dans la moitié inférieure de votre écran.
Si l’interpréteur de commandes affiché sur le côté droit de la fenêtre de terminal est bash, il s’agit du bon interpréteur de commandes qui est ouvert et vous pouvez passer à la section suivante.
Si un interpréteur de commandes autre que bash apparaît, sélectionnez la flèche déroulante des interpréteurs de commandes, puis Azure Cloud Shell (Bash).
Dans la liste des interpréteurs de commandes de terminal, sélectionnez bash.
Dans le terminal, accédez au répertoire où vous avez enregistré votre modèle. Par exemple, si vous avez enregistré votre modèle dans le dossier templates, vous pouvez utiliser la commande suivante :
cd templates
Connexion à Azure
Dans le terminal Visual Studio Code, connectez-vous à Azure en exécutant la commande suivante :
az login
Dans le navigateur qui s’ouvre, connectez-vous à votre compte Azure.
Le terminal Visual Studio Code affiche la liste des abonnements associés à ce compte.
Définissez l’abonnement par défaut pour toutes les commandes Azure CLI que vous exécutez dans cette session.
az account set --subscription "Concierge Subscription"
Notes
Si vous avez utilisé plusieurs bacs à sable récemment, le terminal risque d’afficher plusieurs instances de l’abonnement Concierge. Dans ce cas, utilisez les deux étapes suivantes pour en définir un comme l’abonnement par défaut. Si la commande précédente a réussi et qu’un seul abonnement Concierge est listé, ignorez les deux étapes suivantes.
Obtenez les ID des abonnements Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Définissez l’abonnement par défaut en utilisant l’ID d’abonnement. Remplacez {your subscription ID} par l’ID du dernier abonnement Concierge.
az account set --subscription {your subscription ID}
Définir le groupe de ressources par défaut
Quand vous utilisez Azure CLI, vous pouvez définir le groupe de ressources par défaut et omettre le paramètre du reste des commandes Azure CLI dans cet exercice. Définissez le paramètre par défaut sur le groupe de ressources qui est créé pour vous dans l’environnement de bac à sable.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Déployer le modèle en utilisant Azure PowerShell
Exécutez New-AzResourceGroupDeployment
pour déployer le modèle.
New-AzResourceGroupDeployment -TemplateFile main.bicep
Le texte En cours d’exécution... s’affiche dans le terminal. Le déploiement prend entre une et deux minutes.
Déployer le modèle en utilisant Azure PowerShell
Exécutez New-AzResourceGroupDeployment
pour déployer le modèle.
New-AzResourceGroupDeployment -TemplateFile azuredeploy.json
Le texte En cours d’exécution... s’affiche dans le terminal. Le déploiement prend entre une et deux minutes.
Déployer le modèle à l’aide de l’interface de ligne de commande Azure
Exécutez az deployment group create
pour déployer le modèle.
az deployment group create --template-file main.bicep
Le déploiement prend entre une et deux minutes.
Déployer le modèle à l’aide de l’interface de ligne de commande Azure
Exécutez az deployment group create
pour déployer le modèle.
az deployment group create --template-file azuredeploy.json
Le déploiement prend entre une et deux minutes.
Vérifier le déploiement
Pour vérifier que votre déploiement a été créé et envoyé à Azure, accédez au portail Azure, en veillant à être dans l’abonnement bac à sable :
Sélectionnez votre avatar dans le coin supérieur de la page.
Sélectionnez Changer de répertoire. Dans la liste, sélectionnez le répertoire Microsoft Learn Sandbox (Bac à sable Microsoft Learn).
Sélectionnez Groupes de ressources.
Sélectionnez
[nom du groupe de ressources du bac à sable] .Dans la Vue d’ensemble, vous voyez qu’un déploiement a réussi.
Sélectionnez 1 réussi pour afficher les détails du déploiement.
Sélectionnez le déploiement main pour voir quelles ressources ont été déployées. Dans le cas présent, un réseau virtuel (espace d’adressage 10.0.0.0/16) a été déployé avec deux sous-réseaux.
Laissez la page ouverte dans votre navigateur afin de pouvoir vérifier les déploiements ultérieurement.
Modifier le modèle
Dans le fichier azuredeploy.json dans Visual Studio Code, supprimez l’étiquette nommée
Owner
et sa valeur. Une fois que vous avez terminé, la propriététags
du réseau virtuel doit se présenter comme suit :"tags": { "CostCenter": "12345" },
Mettez à jour
addressPrefixes
pour remplacer/16
par/15
. Une fois que vous avez terminé, la propriétéaddressSpace
du réseau virtuel doit se présenter comme suit :"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Supprimez le sous-réseau nommé
subnet001
. Veillez à supprimer l’intégralité de l’objet sous-réseau. Une fois que vous avez terminé, la propriétésubnets
du réseau virtuel doit se présenter comme suit :"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Enregistrez le modèle.
Dans le fichier main.bicep dans Visual Studio Code, supprimez l’étiquette nommée
Owner
et sa valeur. Une fois que vous avez terminé, la propriététags
du réseau virtuel doit se présenter comme suit :tags: { 'CostCenter': '12345' }
Mettez à jour
addressPrefixes
pour remplacer/16
par/15
. Une fois que vous avez terminé, la propriétéaddressSpace
du réseau virtuel doit se présenter comme suit :addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Supprimez le sous-réseau nommé
subnet001
. Veillez à supprimer l’intégralité de l’objet sous-réseau. Une fois que vous avez terminé, la propriétésubnets
du réseau virtuel doit se présenter comme suit :subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Enregistrez le modèle.
Exécuter la commande de simulation avec le modèle modifié
Exécutez New-AzResourceGroupDeployment
avec l’indicateur -WhatIf
pour effectuer l’opération what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile main.bicep
Exécutez New-AzResourceGroupDeployment
avec l’indicateur -WhatIf
pour effectuer l’opération what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile azuredeploy.json
Exécutez az deployment group what-if
pour effectuer l’opération de simulation :
az deployment group what-if \
--template-file main.bicep
Exécutez az deployment group what-if
pour effectuer l’opération de simulation :
az deployment group what-if \
--template-file azuredeploy.json
La sortie de simulation ressemble à ce qui suit :
Notez que le résultat est codé avec des couleurs, en plus d’avoir un préfixe :
- Violet et ~ pour les modifications
- Vert et + pour les nouvelles ressources à créer
- Orange et - pour les suppressions
Supprimer les ressources du modèle
Mettez à jour le fichier azuredeploy.json dans Visual Studio Code et supprimez tout le contenu du tableau
resources
. Quand vous avez terminé, votre modèle doit se présenter comme suit :{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ ] }
Enregistrez le modèle.
Dans le fichier main.bicep dans Visual Studio Code, supprimez tout le contenu du fichier, mais ne supprimez pas le fichier lui-même.
Enregistrez le modèle.
Déployer en utilisant le mode complet et l’option de confirmation
Dans les étapes suivantes, vous allez déployer un modèle vide sur votre environnement existant.
Avertissement
Si vous effectuez cette opération dans la réalité, vous allez supprimer tout ce que vous avez dans le cloud. Le code suivant est intéressant à titre d’expérience intellectuelle, mais soyez prudent en utilisant ce mode. Au minimum, utilisez l’indicateur -Confirm
pour que vous puissiez arrêter cette opération si vous n’aimez pas les modifications proposées.
Avertissement
Si vous effectuez cette opération dans la réalité, vous allez supprimer tout ce que vous avez dans le cloud. Le code suivant est intéressant à titre d’expérience intellectuelle, mais soyez prudent en utilisant ce mode. Au minimum, utilisez l’indicateur --confirm-with-what-if
pour que vous puissiez arrêter cette opération si vous n’aimez pas les modifications proposées.
Exécutez
New-AzResourceGroupDeployment
avec l’indicateur-Mode Complete
pour effectuer le déploiement en mode complet :New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
Votre sortie est semblable à ce qui suit :
Notez que la dernière ligne de la sortie est une confirmation. Elle vous demande de sélectionner y ou n pour continuer.
Entrez A pour [A] Oui pour tout afin d’exécuter le déploiement et de nettoyer votre environnement.
Exécutez
New-AzResourceGroupDeployment
avec l’indicateur-Mode Complete
pour effectuer le déploiement en mode complet :New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
Votre sortie est semblable à ce qui suit :
Notez que la dernière ligne de la sortie est une confirmation. Elle vous demande de sélectionner y ou n pour continuer.
Entrez A pour [A] Oui pour tout afin d’exécuter le déploiement et de nettoyer votre environnement.
Exécutez
az deployment group create
avec l’indicateur--mode Complete
pour créer un déploiement en mode complet :az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
Votre sortie est semblable à ce qui suit :
Notez que la dernière ligne de la sortie est une confirmation. Elle vous demande de sélectionner y ou n pour continuer.
Entrez y (pour oui) afin d’exécuter le déploiement et de nettoyer votre environnement.
Exécutez
az deployment group create
avec l’indicateur--mode Complete
pour créer un déploiement en mode complet :az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
Votre sortie est semblable à ce qui suit :
Notez que la dernière ligne de la sortie est une confirmation. Elle vous demande de sélectionner y ou n pour continuer.
Entrez y (pour oui) afin d’exécuter le déploiement et de nettoyer votre environnement.
Vérifier le déploiement
Revenez au navigateur ouvert que vous avez utilisé précédemment. Vérifiez que le réseau virtuel n’y figure plus, comme dans la capture d’écran suivante :