Partage via


Préparer un disque dur virtuel Debian pour Azure

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles

Prérequis

Cette section suppose que vous avez déjà installé un système d’exploitation Linux Debian à l’aide d’un fichier .iso téléchargé à partir du site web de Debian sur un disque dur virtuel. Plusieurs outils permettent de créer des fichiers .vhd. Hyper-V n’est qu’un seul exemple. Pour obtenir des instructions sur l’utilisation d’Hyper-V, consultez Installer le rôle Hyper-V et configurer une machine virtuelle.

Notes d'installation

  • Pour obtenir d’autres conseils sur la préparation de Linux pour Azure, consultez les notes générales sur l’installation de Linux.
  • Azure ne prend pas en charge le format VHDX plus récent. Vous pouvez convertir le disque au format VHD en utilisant le gestionnaire Hyper-V ou la cmdlet convert-vhd.
  • Quand vous installez le système Linux, nous vous recommandons d’utiliser les partitions standard plutôt que le gestionnaire de volumes logiques (LVM, Logical Volume Manager), qui constitue souvent le choix par défaut pour de nombreuses installations. L’utilisation de partitions permet d’éviter les conflits de noms LVM avec des machines virtuelles clonées, en particulier si un disque de système d’exploitation doit être attaché à une autre machine virtuelle à des fins de dépannage. Vous pouvez également utiliser LVM ou RAID sur des disques de données.
  • Ne configurez pas une partition d’échange sur le disque du système d’exploitation. Vous pouvez configurer l’agent Linux Azure pour créer un fichier d’échange sur le disque de ressources temporaire. Vous trouverez plus d’informations dans les étapes suivantes.
  • Tous les VHD sur Azure doivent avoir une taille virtuelle alignée sur 1 Mo. Lorsque vous convertissez un disque brut en disque dur virtuel, vous devez vérifier que la taille du disque brut est un multiple de 1 Mo avant la conversion. Pour plus d’informations, consultez les notes d’installation de Linux.

Préparer une image Debian pour Azure

Vous pouvez créer l’image cloud Azure Debian de base avec le générateur d’images cloud FAI (Fully Automatic Installation). Pour préparer une image sans FAI, consultez l’article sur les étapes génériques.

Les commandes git clone et apt install suivantes ont été extraites du référentiel d’images cloud Debian. Pour commencer, clonez le référentiel et installez les dépendances :

$ git clone https://salsa.debian.org/cloud-team/debian-cloud-images.git
$ sudo apt install --no-install-recommends ca-certificates debsums dosfstools \
    fai-server fai-setup-storage make python3 python3-libcloud python3-marshmallow \
    python3-pytest python3-yaml qemu-utils udev
$ cd ./debian-cloud-images

Facultatif : personnalisez la build en ajoutant des scripts (par exemple, des scripts d’interpréteur de commandes) à ./config_space/scripts/AZURE.

Exemple de script pour personnaliser l’image

$ mkdir -p ./config_space/scripts/AZURE
$ cat > ./config_space/scripts/AZURE/10-custom <<EOF
#!/bin/bash

\$ROOTCMD bash -c "echo test > /usr/local/share/testing"
EOF
$ sudo chmod 755 ./config_space/scripts/AZURE/10-custom

Préfixez les commandes que vous souhaitez utiliser pour personnaliser l’image avec $ROOTCMD. Son alias est chroot $target.

Générer l’image Azure Debian

$ make image_[release]_azure_amd64

Cette commande génère quelques fichiers dans le répertoire actuel, notamment le fichier image image_[release]_azure_amd64.raw.

Convertissez l’image brute en disque dur virtuel pour Azure :

rawdisk="image_[release]_azure_amd64.raw"
vhddisk="image_[release]_azure_amd64.vhd"

MB=$((1024*1024))
size=$(qemu-img info -f raw --output json "$rawdisk" | \
gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}')

rounded_size=$(((($size+$MB-1)/$MB)*$MB))
rounded_size_adjusted=$(($rounded_size + 512))

echo "Rounded Size Adjusted = $rounded_size_adjusted"

sudo qemu-img resize "$rawdisk" $rounded_size
qemu-img convert -f raw -o subformat=fixed,force_size -O vpc "$rawdisk" "$vhddisk"

Ce processus crée un disque dur virtuel image_[release]_azure_amd64.vhd avec une taille arrondie afin que vous puissiez le copier sur un disque Azure.

Remarque

Au lieu de cloner le référentiel de salsa et de créer des images localement, les images stables actuelles peuvent être créées et téléchargées à partir de FAI.

Après avoir créé une image de disque dur virtuel Debian stable et avant de la charger, vérifiez que les packages suivants sont installés :

  • apt-get install hyperv-daemons
  • apt-get install waagent # (facultatif, mais recommandé pour les réinitialisations de mot de passe et l’utilisation d’extensions)
  • apt-get install cloud-init

Effectuez ensuite une mise à niveau complète :

  • apt-get full-upgrade

Vous devez à présent créer les ressources Azure pour cette image. Cet exemple utilisant la variable $rounded_size_adjusted, elle doit donc provenir du même processus d’interpréteur de commandes que celui de l’étape précédente.

az group create -l $LOCATION -n $RG

az disk create \
    -n $DISK \
    -g $RG \
    -l $LOCATION \
    --for-upload --upload-size-bytes "$rounded_size_adjusted" \
    --sku standard_lrs --hyper-v-generation V1

ACCESS=$(az disk grant-access \
    -n $DISK -g $RG \
    --access-level write \
    --duration-in-seconds 86400 \
    --query accessSas -o tsv)

azcopy copy "$vhddisk" "$ACCESS" --blob-type PageBlob

az disk revoke-access -n $DISK -g $RG
az image create \
    -g $RG \
    -n $IMAGE \
    --os-type linux \
    --source $(az disk show \
        -g $RG \
        -n $DISK \
        --query id -o tsv)
az vm create \
    -g $RG \
    -n $VM \
    --ssh-key-value $SSH_KEY_VALUE \
    --public-ip-address-dns-name $VM \
    --image $(az image show \
        -g $RG \
        -n $IMAGE \
        --query id -o tsv)

Si la bande passante entre votre ordinateur local et le disque Azure est à l’origine d’un long délai de traitement du chargement avec azcopy, vous pouvez utiliser un serveur de rebond (jumpbox) de machine virtuelle Azure pour accélérer le processus. Voici comment effectuer ce processus :

  1. Créez un fichier d’archive tar du disque dur virtuel sur votre ordinateur local : tar -czvf ./image_buster_azure_amd64.vhd.tar.gz ./image_[release]_azure_amd64.vhd.
  2. Créez une machine virtuelle Azure Linux (distribution de votre choix). Assurez-vous de la créer avec un disque suffisamment grand pour contenir le disque dur virtuel extrait.
  3. Téléchargez l’utilitaire azcopy sur la machine virtuelle Azure Linux. Vous pouvez le récupérer dans Bien démarrer avec AzCopy.
  4. Copiez le fichier d’archive tar sur la machine virtuelle : scp ./image_buster_azure_amd64.vhd.tar.gz <vm>:~.
  5. Sur la machine virtuelle, extrayez le disque dur virtuel : tar -xf ./image_buster_azure_amd64.vhd.tar.gz. Cette étape prend un peu de temps en fonction de la taille du fichier.
  6. Enfin, sur la machine virtuelle, copiez le disque dur virtuel sur le disque Azure avec azcopy (la commande précédente).

Vous êtes maintenant prêt à utiliser votre disque dur virtuel Linux Debian pour créer des machines virtuelles dans Azure. S’il s’agit de votre premier chargement du fichier .vhd sur Azure, consultez Créer une machine virtuelle Linux à partir d’un disque personnalisé.