Préparation d'une machine virtuelle Linux Ubuntu pour Azure
S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles
Ubuntu publie désormais la liste des disques VHD (disques durs virtuels) Azure officiels à télécharger sur la page web Ubuntu Cloud Images. Si vous devez créer votre propre image Ubuntu spécialisée pour Azure au lieu d’utiliser la procédure manuelle qui suit, commencez par ces disques VHD opérationnels connus, puis personnalisez-les selon les besoins. Vous pourrez toujours trouver les dernières versions d’images aux emplacements suivants :
- Ubuntu 18.04/Bionic : bionic-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 20.04/Focal : focal-server-cloudimg-amd64-azure.vhd.zip
- Ubuntu 22.04/Jammy: jammy-server-cloudimg-amd64-azure.vhd.zip
Prérequis
Cet article part du principe que vous avez déjà installé un système d’exploitation Ubuntu Linux sur un disque VHD. Plusieurs outils permettent de créer des fichiers .vhd. Citons par exemple une solution de virtualisation comme Hyper-V. Pour obtenir des instructions, consultez Installer le rôle Hyper-V et configurer une machine virtuelle.
Notes d'installation Ubuntu
- Pour obtenir d’autres conseils sur la préparation de Linux pour Azure, consultez Notes générales sur l’installation de Linux.
- Azure ne prend pas en charge le format VHDX, seulement le VHD fixe. 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. Ces partitions standard évitent les conflits de noms avec des machines virtuelles clonées, notamment si un disque de système d'exploitation doit être relié à une autre machine virtuelle pour la dépanner. Vous pouvez également utiliser LVM ou RAID sur des disques de données.
- Ne configurez pas de partition d’échange ni de fichier d’échange sur le disque du système d’exploitation. Vous pouvez configurer l’agent d’approvisionnement
cloud-init
pour créer un fichier d’échange ou une partition d’échange sur le disque de ressources temporaire. Pour plus d’informations sur ce processus, consultez 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.
Étapes manuelles
Remarque
Avant de tenter de créer votre propre image Ubuntu personnalisée pour Azure, utilisez plutôt les images précréées et testées de la page web Images cloud Ubuntu.
Dans le volet central du Gestionnaire Hyper-V, sélectionnez la machine virtuelle.
Sélectionnez Se connecter pour ouvrir la fenêtre de la machine virtuelle.
Remplacez les référentiels actuels dans l’image par le référentiel Azure d’Ubuntu.
Avant de modifier
/etc/apt/sources.list
, nous vous recommandons d’effectuer une sauvegarde :sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's#http://archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.archive\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo sed -i 's#http://[a-z][a-z]\.security\.ubuntu\.com/ubuntu#http://azure\.archive\.ubuntu\.com/ubuntu#g' /etc/apt/sources.list sudo apt-get update
Les images Ubuntu Azure utilisent à présent le noyau adapté à Azure. Mettez à jour le système d’exploitation vers le dernier noyau personnalisé pour Azure, puis installez les outils Azure Linux (notamment les dépendances Hyper-V) :
sudo apt update sudo apt install linux-azure linux-image-azure linux-headers-azure linux-tools-common linux-cloud-tools-common linux-tools-azure linux-cloud-tools-azure sudo apt full-upgrade sudo reboot
Modifiez la ligne de démarrage du noyau pour GRUB afin d’inclure des paramètres de noyau supplémentaires pour Azure. Pour effectuer cette étape, ouvrez
/etc/default/grub
dans un éditeur de texte, recherchez la variable appeléeGRUB_CMDLINE_LINUX_DEFAULT
(ou ajoutez-la, le cas échéant), puis modifiez-la pour inclure les paramètres suivants :GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 rootdelay=300 quiet splash"
Enregistrez ce fichier, puis fermez-le. Exécutez ensuite la commande
sudo update-grub
. Cette étape permet de vérifier que tous les messages de la console sont envoyés au premier port série, ce qui peut aider le support technique Azure à résoudre les problèmes de débogage.Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu. Ce paramètre est généralement la valeur par défaut.
Installez
cloud-init
(agent d’approvisionnement) et l’agent Azure Linux (gestionnaire d’extensions invitées).Cloud-init
utilisenetplan
pour définir la configuration réseau du système (durant l’approvisionnement et à chaque démarrage suivant), etgdisk
pour partitionner les disques de ressources.sudo apt update sudo apt install cloud-init gdisk netplan.io walinuxagent && systemctl stop walinuxagent
Remarque
Le package
walinuxagent
peut supprimer les packagesNetworkManager
etNetworkManager-gnome
, s’ils sont installés.Supprimez les configurations par défaut de
cloud-init
et les artefactsnetplan
restants qui peuvent entrer en conflit avec l’approvisionnement decloud-init
sur Azure :sudo rm -f /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg /etc/cloud/cloud.cfg.d/curtin-preserve-sources.cfg /etc/cloud/cloud.cfg.d/99-installer.cfg /etc/cloud/cloud.cfg.d/subiquity-disable-cloudinit-networking.cfg sudo rm -f /etc/cloud/ds-identify.cfg sudo rm -f /etc/netplan/*.yaml
Configurez
cloud-init
pour approvisionner le système à l’aide de la source de données Azure :cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg datasource_list: [ Azure ] EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/90-azure.cfg system_info: package_mirrors: - arches: [i386, amd64] failsafe: primary: http://archive.ubuntu.com/ubuntu security: http://security.ubuntu.com/ubuntu search: primary: - http://azure.archive.ubuntu.com/ubuntu/ security: [] - arches: [armhf, armel, default] failsafe: primary: http://ports.ubuntu.com/ubuntu-ports security: http://ports.ubuntu.com/ubuntu-ports EOF cat <<EOF | sudo tee /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg reporting: logging: type: log telemetry: type: hyperv EOF
Configurez l’agent Azure Linux pour qu’il s’appuie sur
cloud-init
afin d’effectuer l’approvisionnement. Pour plus d’informations sur ces options, consultez le projet WALinuxAgent.sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
cat <<EOF | sudo tee -a /etc/waagent.conf # For Azure Linux agent version >= 2.2.45, this is the option to configure, # enable, or disable the provisioning behavior of the Linux agent. # Accepted values are auto (default), waagent, cloud-init, or disabled. # A value of auto means that the agent will rely on cloud-init to handle # provisioning if it is installed and enabled, which in this case it will. Provisioning.Agent=auto EOF
Nettoyez
cloud-init
ainsi que les artefacts et les journaux du runtime d’agent Azure Linux :sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo systemctl stop walinuxagent.service sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log
Supprimez les privilèges d’accès de la machine virtuelle, puis préparez-la à être approvisionnée sur Azure.
Remarque
La commande
sudo waagent -force -deprovision+user
généralise l’image en tentant de nettoyer le système et de le configurer de manière appropriée pour un nouvel approvisionnement. L’option+user
supprime le dernier compte d’utilisateur provisionné et les données associées.sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history
Avertissement
La suppression des privilèges d’accès à l’aide de la commande précédente ne garantit pas que l’image soit exempte de toute information sensible, ni qu’elle convienne pour une redistribution.
Sélectionnez Action>Arrêter dans le Gestionnaire Hyper-V.
Azure accepte uniquement les VHD de taille fixe. Si le disque du système d’exploitation de la machine virtuelle n’est pas un VHD fixe, utilisez l’applet de commande PowerShell
Convert-VHD
et spécifiez l’option-VHDType Fixed
. Pour plus d’informations, consultez la documentation relative àConvert-VHD
dans Convert-VHD.Pour apporter une machine virtuelle de 2e génération sur Azure, procédez comme suit :
Changez de répertoire pour accéder au répertoire
boot EFI
:cd /boot/efi/EFI
Copiez le répertoire
ubuntu
dans un nouveau répertoire nomméboot
:sudo cp -r ubuntu/ boot
Changez de répertoire pour accéder au répertoire boot qui vient d’être créé :
cd boot
Renommez le fichier
shimx64.efi
:sudo mv shimx64.efi bootx64.efi
Renommez le fichier
grub.cfg
enbootx64.cfg
:sudo mv grub.cfg bootx64.cfg
Contenu connexe
Vous êtes désormais prêt à utiliser votre disque VHD (disque dur virtuel) Ubuntu Linux 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é.