Exercice - Contrôle de l’ordre de déploiement des ressources

Effectué

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

  1. Ouvrez Visual Studio Code.

  2. Ouvrez une fenêtre de terminal en utilisant le menu Terminal.

  3. 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.

    Screenshot of Terminal window, terminal type.

  4. 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.

  5. Sélectionnez pwsh.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. Sélectionnez le + dans le terminal pour créer un terminal avec pwsh comme shell.

Connexion à Azure

  1. Exécutez Connect-AzAccount pour vous connecter à votre compte.

    Connect-AzAccount
    

    Une fenêtre de navigateur s’affiche.

  2. 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

  1. 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.

  2. 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.

  1. 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'
    
  2. 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.

  3. 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 :

  1. 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.

  2. À 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
    
  3. 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

  1. Ouvrez Visual Studio Code.

  2. Ouvrez une fenêtre de terminal en utilisant le menu Terminal.

  3. 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.

  4. 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.

  5. Sélectionnez le type d’interpréteur de commandes souhaité.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. Sélectionnez le + dans le terminal pour créer un terminal avec le type d’interpréteur de commandes sélectionné.

Connexion à Azure

  1. Dans l'application Terminal, exécutez az login :

    az login
    

    Une fenêtre de navigateur s’affiche.

  2. 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.

  1. 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 commande curl suivante :

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. 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 :

  1. 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
    
  2. 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
    
  3. 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.

  4. À 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
    
  5. 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.