Exercice : Ajouter un disque de données à une machine virtuelle

Effectué

Votre cabinet d’avocats développe sa charge d’affaires, et vous devez créer un serveur web Linux pour stocker des documents critiques de diverses sources : clients, autres cabinets d’avocats et bureaux d’autorité judiciaire. Le serveur web vous permet de charger des documents et de les stocker sur disque.

Conseil

Cet exercice utilise Linux comme exemple, mais le processus de base de création de machines virtuelles et d’ajout de disques est le même pour Windows. La principale différence se situe au niveau du partitionnement et du formatage du disque. Sur Windows, vous pouvez vous connecter à votre machine virtuelle par le biais du Bureau à distance, puis utiliser les outils intégrés de gestion des disques ou déployer un script PowerShell similaire au script Bash que vous utiliserez ici.

Votre objectif consiste à créer une machine virtuelle Linux et à attacher un nouveau disque dur virtuel (VHD) nommé uploadDataDisk1 sur lequel stocker le répertoire /uploads.

Définir les valeurs par défaut d’Azure CLI

Azure CLI vous laisse définir des valeurs par défaut pour ne pas avoir à en définir chaque fois que vous exécutez une commande.

Vous spécifiez la localisation, ou région, Azure par défaut. Cette localisation est l’endroit où votre machine virtuelle Azure est placée.

Dans l’idéal, cette localisation doit être proche de vos clients. Dans le cas présent, sélectionnez la région la plus proche de vous à partir des emplacements disponibles pour le bac à sable (sandbox) Azure.

Le bac à sable gratuit vous permet de créer des ressources dans certaines régions Azure du monde. Sélectionnez une région dans cette liste au moment où vous créez des ressources :

  • westus2
  • southcentralus
  • centralus
  • eastus
  • westeurope
  • southeastasia
  • japaneast
  • brazilsouth
  • australiasoutheast
  • centralindia
  1. Exécutez az configure pour définir l’emplacement par défaut à utiliser. Remplacez eastus par la localisation choisie à l’étape précédente.

    az configure --defaults location=eastus
    

    Conseil

    Vous pouvez utiliser le bouton Copier pour copier des commandes dans le Presse-papiers. Pour coller, cliquez avec le bouton droit sur une nouvelle ligne dans le terminal Cloud Shell et sélectionnez Coller ou utilisez le raccourci clavier Maj+Inser (⌘+V sur macOS).

  2. Pour le nom du groupe de ressources par défaut, utilisez celui du groupe de ressources préconfiguré créé à l’aide du bac à sable Azure : [groupe de ressources de bac à sable]

    az configure --defaults group="<rgn>[sandbox Resource Group]</rgn>"
    

Créer une machine virtuelle Linux

Ici, vous allez créer une machine virtuelle Linux pour héberger votre serveur web.

  1. Exécutez la commande az vm create pour créer votre machine virtuelle Ubuntu Linux.

    az vm create \
      --name support-web-vm01 \
      --image Canonical:UbuntuServer:16.04-LTS:latest \
      --size Standard_DS1_v2 \
      --admin-username azureuser \
      --generate-ssh-keys
    
    • Le nom de la machine virtuelle est support-web-vm01.
    • Sa taille est Standard_DS1_v2.
    • Le nom d’utilisateur administrateur est azureuser. Dans la pratique, vous pouvez choisir n’importe quel nom.
    • L’argument --generate-ssh-keys génère une paire de clés SSH qui vous permet de vous connecter à votre machine virtuelle via SSH.

    Le déploiement de la machine virtuelle ne nécessite que quelques minutes. Quand la machine virtuelle est prête, des informations relatives à cette machine s’affichent au format JSON. Voici un exemple :

    {
      "fqdns": "",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/680469d8-edB7-42ec-b118-cd80d51741e7/providers/Microsoft.Compute/virtualMachines/support-web-vm01",
      "location": "eastus",
      "macAddress": "00-0D-3A-10-63-0A",
      "powerState": "VM running",
      "privateIpAddress": "10.0.0.4",
      "publicIpAddress": "104.211.38.211",
      "resourceGroup": "680469d8-edB7-42ec-b118-cd80d51741e7",
      "zones": ""
    }
    

    Notes

    Dans cette leçon, vous utilisez cette machine virtuelle pour apprendre à gérer des disques. Dans la pratique, vous pouvez également installer un serveur web et d’autres logiciels, puis exécuter az vm open-port pour rendre les ports accessibles publiquement.

Ajouter un disque de données vide à votre machine virtuelle

Ici, vous allez créer un disque de données vide et l’attacher à votre machine virtuelle. Initialement, votre disque de données a une taille de 64 Go. Plus tard, vous monterez ce disque sur le répertoire /uploads dans votre machine virtuelle.

Conseil

À des fins d’apprentissage, vous allez créer la machine virtuelle et le disque de données dans des étapes distinctes. Dans la pratique, vous pouvez spécifier l’argument --data-disk-sizes-gb dans la commande az vm create pour ajouter des disques de données lors de la création de la machine virtuelle.

  1. Exécutez la commande az vm disk attach suivante pour ajouter un disque vide à la machine virtuelle.

    az vm disk attach \
      --vm-name support-web-vm01 \
      --name uploadDataDisk1 \
      --size-gb 64 \
      --sku Premium_LRS \
      --new
    

    Cette commande :

    • Nomme le disque uploadDataDisk1.
    • Lui attribue une taille de 64 Go.
    • Spécifie l’utilisation du stockage Premium avec redondance locale.

Pour utiliser ce disque, vous devez le partitionner et le formater. C’est ce que nous allons faire maintenant.

Initialiser et formater le disque de données

Votre lecteur de données vide doit être initialisé et formaté. Le processus est le même que pour un disque physique.

Pour les tâches uniques, vous pouvez vous connecter manuellement à votre machine virtuelle via SSH et exécuter les commandes dont vous avez besoin. Toutefois, afin de rendre le processus plus reproductible et moins sujet aux erreurs, vous pouvez spécifier vos commandes dans un script Bash ou un script PowerShell (si disponible).

L’utilisation d’un script pour automatiser le processus présente un avantage supplémentaire : votre script sert de documentation sur l’exécution du processus. Les autres utilisateurs peuvent lire votre script pour comprendre la configuration du système. Si vous devez changer le processus, il vous suffit de modifier votre script et de le tester sur une machine virtuelle de travail temporaire avant de déployer vos changements dans un environnement de production.

Pour automatiser le processus dans cette leçon, vous utilisez une extension de script personnalisé. L’extension de script personnalisé est un moyen simple de télécharger et d’exécuter des scripts sur des machines virtuelles Azure. C’est l’une des nombreuses possibilités de configuration du système une fois que votre machine virtuelle est opérationnelle.

Vous pouvez stocker vos scripts dans le Stockage Azure ou dans un emplacement public comme GitHub. Vous pouvez exécuter les scripts manuellement ou dans le cadre d’un déploiement plus automatisé. Ici, vous exécutez une commande Azure CLI pour télécharger un script Bash prédéfini à partir de GitHub et l’exécuter sur votre machine virtuelle.

À des fins d’apprentissage, nous allons également exécuter quelques commandes sur votre machine virtuelle pour vérifier si celle-ci est configurée comme prévu.

  1. Exécutez az vm show pour obtenir l’adresse IP publique de votre machine virtuelle, puis enregistrez-la comme une variable Bash.

    ipaddress=$(az vm show \
      --name support-web-vm01 \
      --show-details \
      --query [publicIps] \
      --output tsv)
    
  2. Exécutez la commande ssh suivante pour exécuter la commande lsblk sur votre machine virtuelle via une connexion SSH à l’aide des données de la variable ipaddress que vous avez créée à l’étape précédente. Rappelez-vous que azureuser était le nom d’utilisateur administrateur que nous avons utilisé quand nous avons créé la machine virtuelle. Si vous avez choisi un autre nom, utilisez-le à la place. Entrez Oui quand vous y êtes invité.

    ssh azureuser@$ipaddress lsblk
    

    La sortie de cette commande doit se présenter comme suit.

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sr0      11:0    1  628K  0 rom  
    sdc       8:32   0   64G  0 disk 
    sda       8:0    0   30G  0 disk 
    ├─sda14   8:14   0    4M  0 part 
    ├─sda15   8:15   0  106M  0 part /boot/efi
    └─sda1    8:1    0 29.9G  0 part /
    

    Notez que le lecteur de 64 Go que vous avez créé, sdc, n’est pas monté. Le lecteur est répertorié de cette façon, car il n’est pas encore initialisé.

  3. Exécutez la commande az vm extension set suivante pour exécuter le script Bash prédéfini sur votre machine virtuelle.

    Avertissement

    Le script modifie /etc/fstab. Si vous ne modifiez pas correctement le fichier /etc/fstab, il se peut que le système ne puisse plus démarrer. Testez toujours les modifications apportées à la configuration sur un système de travail temporaire avant d’effectuer le déploiement dans un environnement de production. Pour savoir comment modifier correctement ce fichier, reportez-vous à la documentation de votre distribution. Dans un environnement de production, nous vous recommandons également de créer une sauvegarde de ce fichier pour que vous puissiez restaurer la configuration, si nécessaire.

    az vm extension set \
      --vm-name support-web-vm01 \
      --name customScript \
      --publisher Microsoft.Azure.Extensions \
      --settings '{"fileUris":["https://raw.githubusercontent.com/MicrosoftDocs/mslearn-add-and-size-disks-in-azure-virtual-machines/master/add-data-disk.sh"]}' \
      --protected-settings '{"commandToExecute": "./add-data-disk.sh"}'
    

    Pendant l’exécution de la commande, vous pouvez, si vous le souhaitez, examiner le script Bash dans un autre onglet du navigateur.

    Pour récapituler, le script :

    • Partitionne le lecteur /dev/sdc.
    • Crée un système de fichiers ext4 sur le lecteur.
    • Crée le répertoire /uploads, qui nous sert de point de montage.
    • Attache le disque au point de montage.
    • Met à jour /etc/fstab pour que le lecteur soit monté automatiquement après le redémarrage du système.
  4. Pour vérifier la configuration, exécutez la même commande ssh que précédemment pour exécuter la commande lsblk sur votre machine virtuelle via une connexion SSH.

    ssh azureuser@$ipaddress lsblk
    

    Vous pouvez constater que sdc/sdc1 est partitionné et monté sur le répertoire /uploads, comme prévu.

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb       8:16   0    7G  0 disk 
    └─sdb1    8:17   0    7G  0 part /mnt
    sr0      11:0    1  628K  0 rom  
    sdc       8:32   0   64G  0 disk 
    └─sdc1    8:33   0   64G  0 part /uploads
    sda       8:0    0   30G  0 disk 
    ├─sda14   8:14   0    4M  0 part 
    ├─sda15   8:15   0  106M  0 part /boot/efi
    └─sda1    8:1    0 29.9G  0 part /
    

Conseil

Certains noyaux Linux prennent en charge TRIM pour ignorer les blocs inutilisés sur les disques. Cette fonctionnalité est disponible sur les disques Azure et peut être avantageuse si vous créez des fichiers volumineux et que vous les supprimez ensuite. Découvrez comment activer cette fonctionnalité dans la documentation Azure.

Résumé

Vous avez créé un disque de données et l’avez attaché à votre machine virtuelle. Vous avez utilisé l’extension de script personnalisé pour exécuter un script Bash prédéfini sur votre machine virtuelle afin de rendre le processus plus reproductible. Le script Bash partitionne, formate et monte votre disque pour que votre serveur web puisse y écrire des données.

Maintenant que le disque de données sur votre machine virtuelle est prêt, examinons un peu plus en détail les différents types de disques que vous pouvez créer. Votre principale décision consiste à choisir entre le stockage Standard et le stockage Premium.