Exercice - Contrôle de l’ordre de déploiement des ressources
Dans cette partie, vous allez commencer par effectuer quelques tâches de configuration de base. Dans Visual Studio Code, vous connectez une session de terminal à l’abonnement Azure fourni par l’environnement de bac à sable (sandbox) Azure gratuit. Cela vous permet d’authentifier les commandes sur Azure.
Ensuite, vous exécutez un modèle ARM de base qui configure une machine virtuelle Linux. Une fois le déploiement terminé, vérifiez que la machine virtuelle est en cours d’exécution et connectée.
Bien que l’utilisation de machines virtuelles soit une tâche courante, vous découvrez qu’une ressource de machine virtuelle requiert des composants de mise en réseau et de stockage qui doivent exister avant que la machine virtuelle puisse être créée. Vous voyez comment la construction dependsOn
vous permet de définir l’ordre dans lequel les ressources sont approvisionnées.
Programme d’installation
Ici, vous ouvrez Visual Studio Code, créez une session PowerShell et vous connectez à l’abonnement Azure fourni par l’environnement de bac à sable (sandbox) Azure gratuit.
Vous devez effectuer ces tâches d’installation une fois dans ce module. Vous pouvez faire référence à ces étapes si vous vous déconnectez ou subissez une déconnexion dans un exercice ultérieur.
Ouvrir PowerShell dans Visual Studio Code
Ouvrez Visual Studio Code.
Ouvrez une fenêtre de terminal en utilisant le menu Terminal.
Si le menu déroulant à droite de la fenêtre du terminal affiche pwsh, cela signifie que vous disposez du bon interpréteur de commandes pour travailler et que vous pouvez passer à la section suivante.
Si ce n’est pas le cas, sélectionnez la liste déroulante et choisissez Sélectionner l’interpréteur de commandes par défaut.
Sélectionnez pwsh.
Sélectionnez le + dans le terminal pour créer un terminal avec pwsh comme shell.
Connexion à Azure
Exécutez
Connect-AzAccount
pour vous connecter à votre compte.Connect-AzAccount
Une fenêtre de navigateur s’affiche.
Sélectionnez le compte que vous avez utilisé pour activer le bac à sable (sandbox), puis fermez la fenêtre du navigateur quand vous y êtes invité.
Définir l’abonnement actif
Exécutez
Get-AzSubscription
pour obtenir l’ID d’abonnement de l’environnement de bac à sable.Get-AzSubscription
Recherchez
Concierge Subscription
, puis copiez la deuxième colonne. Il se présente un peu comme cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.Exécutez
Set-AzContext
pour passer de votre abonnement actif à l’abonnement Concierge.Notes
Veillez à remplacer {Your subscription ID} par l’ID de l’abonnement Concierge que vous venez de récupérer dans la dernière commande.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Définir le groupe de ressources par défaut
En règle générale, lorsque vous exécutez une commande Azure CLI, vous devez spécifier un groupe de ressources.
Le bac à sable fournit un groupe de ressources par défaut pour vous. Pour faciliter l’exécution des commandes Azure CLI, vous définissez ici le groupe de ressources par défaut.
Exécutez Set-AzDefault
pour définir le groupe de ressources par défaut.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Notes
En règle générale, lorsque vous utilisez PowerShell pour déployer des ressources sur Azure, vous devez spécifier un groupe de ressources. Vous contournez cette obligation en définissant le contexte de votre déploiement à l’aide de Set-AzDefault
.
Ce qui se trouve dans un déploiement de machine virtuelle typique
Lorsque vous déployez une machine virtuelle, gardez à l’esprit qu’il existe plusieurs ressources qui doivent être déployées en même temps que la machine virtuelle pour fonctionner.
Voici un bref résumé des types de ressources que vous devez généralement déployer avec une machine virtuelle :
- Microsoft.Storage/storageAccounts. Un compte de stockage fournit de l’espace disque pour le système d’exploitation et les fichiers.
- Microsoft.Network/publicIPAddresses. Une adresse IP publique vous permet de vous connecter à la machine virtuelle à partir d’Internet.
- Microsoft.Network/networkSecurityGroups. Un groupe de sécurité réseau contient des règles pour gérer le trafic entrant et sortant vers votre réseau virtuel.
- Microsoft.Network/virtualNetworks. Votre machine virtuelle doit être placée dans un réseau virtuel. Pour cette ressource, le groupe de sécurité réseau doit être déployé avant.
- Microsoft.Network/networkInterfaces. Cette ressource dépend de deux autres ressources : l’adresse IP publique et le réseau virtuel.
- Microsoft.Compute/virtualMachines. La machine virtuelle est la ressource principale que vous souhaitez déployer. Elle dépend de deux ressources différentes : le compte de stockage et les interfaces réseau.
Déployer une machine virtuelle Linux
Ici, vous téléchargez un modèle ARM à partir d’un référentiel GitHub que nous fournissons pour vous. Le modèle configure une machine virtuelle Linux et toutes les ressources nécessaires à son exécution.
Exécutez la commande
curl
suivante pour télécharger le modèle ARM :curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
Exécutez l’applet de commande
ConvertTo-SecureString
, puis affectez les résultats à une variable PowerShell nommée$secure
:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
Vous disposez maintenant d’une version chiffrée de votre mot de passe que vous pouvez passer au script de déploiement suivant.
Pour déployer le modèle, exécutez la commande
New-AzResourceGroupDeployment
:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
L’exécution de la commande peut prendre quelques minutes. Pendant l’exécution de la commande, vous pouvez, si vous le souhaitez, examiner le modèle ARM sous un onglet distinct du navigateur.
Notez les dépendances de la ressource en recherchant la clé
dependsOn
. Par exemple, la ressource de machine virtuelle dépend de l’interface réseau :"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Vérifier le déploiement
Vérifiez que la machine virtuelle est configurée et qu’elle peut être connectée via SSH. Pour ce faire :
Exécutez la commande
Invoke-Expression
pour vous connecter à la machine virtuelle via SSH :Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Quand vous y êtes invité, entrez
yes
(oui) pour poursuivre la connexion. Entrez ensuite le mot de passe de l’administrateur,insecurepassword123!
.Important
Dans la pratique, gardez des mots de passe sécurisés. Vous pouvez également utiliser l’authentification par clé publique, qui est généralement plus sécurisée que l’utilisation de mots de passe.
À partir de votre connexion SSH à la machine virtuelle, exécutez
hostname
pour imprimer le nom d’hôte de la machine virtuelle :hostname
Vous voyez le nom d’hôte interne de la machine virtuelle,
vm1
:vm1
Exécutez
exit
pour quitter votre session SSH.exit
Félicitations, vous avez correctement déployé une machine virtuelle Linux à l’aide d’un modèle ARM. Une machine virtuelle est un type de ressource commun qui comprend des ressources dépendantes.
Programme d’installation
Ici, vous ouvrez Visual Studio Code, créez une session de terminal et vous connectez à l’abonnement Azure fourni par l’environnement de bac à sable (sandbox) Azure gratuit.
Vous devez effectuer ces tâches d’installation une fois dans ce module. Vous pouvez faire référence à ces étapes si vous vous déconnectez ou subissez une déconnexion dans un exercice ultérieur.
Ouvrir un interpréteur de commandes (shell) dans Visual Studio Code
Ouvrez Visual Studio Code.
Ouvrez une fenêtre de terminal en utilisant le menu Terminal.
Si le menu déroulant affiche votre interpréteur de commandes préféré (bash ou zsh, par exemple), vous pouvez passer à la section suivante.
Si ce n’est pas le cas, sélectionnez la liste déroulante et choisissez Sélectionner l’interpréteur de commandes par défaut.
Sélectionnez le type d’interpréteur de commandes souhaité.
Sélectionnez le + dans le terminal pour créer un terminal avec le type d’interpréteur de commandes sélectionné.
Connexion à Azure
Dans l'application Terminal, exécutez
az login
:az login
Une fenêtre de navigateur s’affiche.
Sélectionnez le compte que vous avez utilisé pour activer le bac à sable (sandbox) et fermez la fenêtre du navigateur lorsque vous y êtes invité.
Définir l’abonnement actif
Exécutez la commande az account set
suivante pour définir l’environnement de bac à sable Azure comme abonnement actif :
az account set -s "Concierge Subscription"
Notes
Si cette commande se solde par un échec, exécutez az account list --refresh --all
, puis réexécutez la commande az account set
.
Définir le groupe de ressources par défaut
En règle générale, lorsque vous exécutez une commande Azure CLI, vous devez spécifier un groupe de ressources.
Le bac à sable fournit un groupe de ressources par défaut pour vous. Pour faciliter l’exécution des commandes Azure CLI, vous définissez ici le groupe de ressources par défaut.
Exécutez la commande az configure
suivante pour définir le groupe de ressources par défaut :
az configure --defaults group=<rgn>resource group name</rgn>
Ce qui se trouve dans un déploiement de machine virtuelle typique
Lorsque vous déployez une machine virtuelle, gardez à l’esprit qu’il existe plusieurs ressources qui doivent être déployées en même temps que la machine virtuelle pour fonctionner.
Voici un bref résumé des types de ressources que vous devez généralement déployer avec une machine virtuelle :
- Microsoft.Storage/storageAccounts. Un compte de stockage fournit de l’espace disque pour le système d’exploitation et les fichiers.
- Microsoft.Network/publicIPAddresses. Une adresse IP publique vous permet de vous connecter à la machine virtuelle à partir d’Internet.
- Microsoft.Network/networkSecurityGroups. Un groupe de sécurité réseau contient des règles pour gérer le trafic entrant et sortant vers votre réseau virtuel.
- Microsoft.Network/virtualNetworks. Votre machine virtuelle doit être placée dans un réseau virtuel. Pour cette ressource, le groupe de sécurité réseau doit être déployé avant.
- Microsoft.Network/networkInterfaces. Cette ressource dépend de deux autres ressources : l’adresse IP publique et le réseau virtuel.
- Microsoft.Compute/virtualMachines. La machine virtuelle est la ressource principale que vous souhaitez déployer. Elle dépend de deux ressources différentes : le compte de stockage et les interfaces réseau.
Déployer une machine virtuelle Linux
Ici, vous téléchargez un modèle ARM (Azure Resource Manager) à partir d’un dépôt GitHub que nous vous fournissons. Le modèle configure une machine virtuelle Linux et toutes les ressources nécessaires à son exécution.
Exécutez la commande
wget
suivante pour télécharger le modèle ARM :wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Si
wget
n’est pas installé, vous pouvez exécuter la commandecurl
suivante :curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
Pour déployer le modèle, exécutez la commande
az deployment group create
:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
L’exécution de la commande peut prendre quelques minutes. Pendant l’exécution de la commande, vous pouvez, si vous le souhaitez, examiner le modèle ARM sous un onglet distinct du navigateur.
Notez les dépendances de la ressource en recherchant la clé
dependsOn
. Par exemple, la ressource de machine virtuelle dépend de l’interface réseau :"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Vérifier le déploiement
Vérifiez que la machine virtuelle est configurée et qu’elle peut être connectée via SSH. Pour ce faire :
Exécutez la commande
az deployment group list
suivante pour répertorier les groupes de déploiement dans votre abonnement :az deployment group list --output table
Vous voyez un groupe de déploiement, nommé azuredeploy :
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
Exécutez la commande
az deployment group show
suivante pour afficher la commande SSH que vous pouvez utiliser pour vous connecter à la machine virtuelle :az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
Le modèle ARM définit cette propriété dans la section
output
. Voici un exemple :ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Exécutez à nouveau la commande, en utilisant cette fois la syntaxe
$()
pour exécuter la commande SSH :$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Quand vous y êtes invité, entrez
yes
(oui) pour poursuivre la connexion. Entrez ensuite le mot de passe de l’administrateur,insecurepassword123!
.Important
Dans la pratique, gardez des mots de passe sécurisés. Vous pouvez également utiliser l’authentification par clé publique, qui est généralement plus sécurisée que l’utilisation de mots de passe.
À partir de votre connexion SSH à la machine virtuelle, exécutez
hostname
pour imprimer le nom d’hôte de la machine virtuelle :hostname
Vous voyez le nom d’hôte interne de la machine virtuelle,
vm1
:vm1
Exécutez
exit
pour quitter votre session SSH.exit
Félicitations, vous avez correctement déployé une machine virtuelle Linux à l’aide d’un modèle ARM. Une machine virtuelle est un type de ressource commun qui comprend des ressources dépendantes.