Préparation d’une machine virtuelle Linux Oracle pour Azure
S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles
Cet article suppose que vous avez déjà installé un système d'exploitation Oracle Linux sur un disque dur virtuel (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 générales d’installation d’Oracle Linux
- Pour obtenir d’autres conseils sur la préparation de Linux pour Azure, consultez les notes générales sur l’installation de Linux.
- Hyper-V et Azure prennent en charge Oracle Linux avec le noyau d’entreprise UEK ou le noyau compatible Red Hat.
- Le noyau UEK2 d’Oracle n’est pas pris en charge sur Hyper-V et Azure parce qu’il ne contient pas les pilotes nécessaires.
- 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
. - La prise en charge par le noyau du montage des systèmes de fichiers à fonction définis par l’utilisateur (UDF) est requise. Au premier démarrage sur Azure, la configuration d’approvisionnement est transmise à la machine virtuelle Linux via un média au format UDF attaché à l’invité. L’agent Linux Azure doit être en mesure de monter le système de fichiers UDF pour lire sa configuration et approvisionner la machine virtuelle.
- 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.
- Les versions du noyau Linux antérieures à la version 2.6.37 ne prennent pas en charge NUMA sur Hyper-V avec des machines virtuelles de taille supérieure. Ce problème affecte principalement les anciennes distributions qui utilisent le noyau Red Hat 2.6.32 en amont et a été résolu dans Oracle Linux 6.6 et ultérieur.
- Ne configurez pas une partition d’échange sur le disque du système d’exploitation.
- 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.
- Assurez-vous que le référentiel
Addons
est activé. Modifiez le fichier/etc/yum.repos.d/public-yum-ol6.repo
(Oracle Linux 6) ou/etc/yum.repos.d/public-yum-ol7.repo
(Oracle Linux 7). Remplacez la ligneenabled=0
parenabled=1
sous [ol6_addons] ou [ol7_addons] dans ce fichier.
Oracle Linux 6.x
Important
N’oubliez pas qu’Oracle Linux 6.x est déjà en fin de vie. Oracle Linux version 6.10 a une prise en charge du cycle de vie étendu disponible, qui se termine en juillet 2024.
Vous devez suivre des étapes de configuration spécifiques dans le système d'exploitation afin que la machine virtuelle s’exécute dans Azure.
Dans le volet central d’Hyper-V Manager, sélectionnez la machine virtuelle.
Sélectionnez Connecter afin d’ouvrir la fenêtre pour la machine virtuelle.
Désinstallez
NetworkManager
:sudo rpm -e --nodeps NetworkManager
Remarque
Si le package n'est pas déjà installé, la commande échoue et un message d'erreur s'affiche. C’est normal.
Créez un fichier nommé network in the
/etc/sysconfig/
et entrez-y le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez un fichier nommé ifcfg-eth0 in the
/etc/sysconfig/network-scripts/
et entrez-y le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifiez les règles udev pour éviter la génération de règles statiques pour les interfaces Ethernet. Ces règles peuvent poser des problèmes quand vous clonez une machine virtuelle dans Azure ou Hyper-V :
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
Assurez-vous que le service réseau se lance au démarrage :
sudo chkconfig network on
Installez
python-pyasn1
:sudo yum install python-pyasn1
Modifiez la ligne de démarrage du noyau dans votre configuration grub pour y inclure les paramètres de noyau supplémentaires pour Azure. Pour effectuer cette étape, ouvrez
/boot/grub/menu.lst
dans un éditeur de texte et vérifiez que le noyau comprend les paramètres suivants :console=ttyS0 earlyprintk=ttyS0
Ce paramètre garantit que tous les messages de la console sont envoyés vers le premier port série, ce qui peut faciliter la tâche du support Azure pour résoudre les problèmes.
En plus des étapes précédentes, nous vous recommandons de supprimer les paramètres suivants :
rhgb quiet crashkernel=auto
Le démarrage graphique et sans assistance n’est pas utile dans un environnement cloud où vous souhaitez que tous les journaux soient envoyés au port série.
Vous pouvez laisser l’option
crashkernel
configurée si vous le souhaitez. Ce paramètre réduit la quantité de mémoire disponible dans la machine virtuelle de 128 Mo ou plus, ce qui peut poser problème pour les tailles de machine virtuelle plus petites.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 l’agent linux Azure en exécutant la commande suivante. La version la plus récente est la 2.0.15.
sudo yum install WALinuxAgent
L’installation du package
WALinuxAgent
supprime les packagesNetworkManager
etNetworkManager-gnome
si cela n’a pas déjà été fait, comme décrit à l’étape 2.Ne créez pas d’espace d’échange sur le disque du système d’exploitation.
L’agent Linux Azure peut configurer automatiquement un espace d’échange en utilisant le disque local de ressources qui est attaché à la machine virtuelle après l’approvisionnement sur Azure. Le disque de ressources local est un disque temporaire qui peut être vidé quand la machine virtuelle est déprovisionnée. Après avoir installé l’agent Azure Linux (voir l’étape précédente), modifiez en conséquence les paramètres suivants dans le fichier
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Désapprovisionnez la machine virtuelle et préparez son approvisionnement sur Azure :
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
Sélectionnez Action>Arrêter dans le Gestionnaire Hyper-V. Votre disque dur virtuel Linux est alors prêt pour le téléchargement dans Azure.
Oracle Linux 7.0 et versions ultérieures
Suivez les étapes des sections suivantes si vous utilisez Oracle Linux 7.0 ou ultérieur.
Modifications dans Oracle Linux 7
La préparation d’une machine virtuelle Oracle Linux 7 pour Azure est similaire à celle pour Oracle Linux 6, mais plusieurs différences valent la peine d’être notées :
- Azure prend en charge Oracle Linux avec le noyau de l’entreprise (UEK) ou le noyau compatible Red Hat. Nous vous recommandons d’utiliser Oracle Linux avec UEK.
- Le package
NetworkManager
n’est plus en conflit avec l’agent Azure Linux. Ce package est installé par défaut et nous vous recommandons de ne pas le supprimer. - GRUB2 étant désormais utilisé comme programme de démarrage système (bootloader) par défaut, la procédure de modification des paramètres du noyau a donc changé. (Consultez la section « Étapes de configuration ».)
- XFS est maintenant le système de fichiers par défaut. Vous pouvez toujours utiliser le système de fichiers ext4 si vous le souhaitez.
Étapes de configuration
Dans le Gestionnaire Hyper-V, sélectionnez la machine virtuelle.
Sélectionnez Connecter afin d’ouvrir une fenêtre de console pour la machine virtuelle.
Créez un fichier nommé network in the
/etc/sysconfig/
et entrez-y le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez un fichier nommé ifcfg-eth0 in the
/etc/sysconfig/network-scripts/
et entrez-y le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Modifiez les règles udev pour éviter la génération de règles statiques pour les interfaces Ethernet. Ces règles peuvent poser des problèmes quand vous clonez une machine virtuelle dans Azure ou Hyper-V :
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
Assurez-vous que le service réseau se lance au démarrage :
sudo chkconfig network on
Installez le package
python-pyasn1
:sudo yum install python3-pyasn1
Effacez les métadonnées yum actuelles et installez toute mise à jour disponible :
sudo yum clean all sudo yum -y update
Modifiez la ligne de démarrage du noyau dans votre configuration grub pour y inclure les paramètres de noyau supplémentaires pour Azure. Pour effectuer cette étape, ouvrez
/etc/default/grub
dans un éditeur de texte et modifiez le paramètreGRUB_CMDLINE_LINUX
. Par exemple :GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
Cette modification garantit également que tous les messages de la console sont envoyés au premier port série, ce qui peut aider le support Azure à résoudre les problèmes. Il désactive également les conventions d’affectation de noms pour les cartes réseau dans Oracle Linux 7 avec le noyau UEK. Nous vous recommandons également de supprimer les paramètres suivants :
rhgb quiet crashkernel=auto
Le démarrage graphique et sans assistance n’est pas utile dans un environnement cloud où vous souhaitez que tous les journaux soient envoyés au port série.
Vous pouvez laisser l’option
crashkernel
configurée si vous le souhaitez. Ce paramètre réduit la quantité de mémoire disponible dans la machine virtuelle de 128 Mo ou plus, ce qui peut poser problème pour les tailles de machine virtuelle plus petites.Quand vous avez terminé de modifier
/etc/default/grub
, régénérez la configuration grub :sudo grub2-mkconfig -o /boot/grub2/grub.cfg
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 l’agent Azure Linux et les dépendances :
sudo yum install WALinuxAgent sudo systemctl enable waagent
Installez
cloud-init
pour gérer l’approvisionnement :sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
Configurez
waagent
pourcloud-init
:sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
echo "Allow only Azure datasource, disable fetching network setting via IMDS"
sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/resource/swapfile ]]; then echo Removing swapfile - Oracle Linux uses a swapfile by default swapoff /mnt/swapfile rm /mnt/swapfile -f fi echo "Add console log file" cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF
Configuration de l’échange :
Ne créez pas d’espace d’échange sur le disque du système d’exploitation.
Avant, l’agent Azure Linux était utilisé automatiquement pour configurer l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée sur Azure. Toutefois,
cloud-init
gère désormais cette étape. Vous ne devez pas utiliser l’agent Linux pour formater le disque de ressources afin de créer le fichier d’échange. Modifiez les paramètres suivants dans/etc/waagent.conf
de manière appropriée :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
Si vous souhaitez monter, formater et créer l’échange, vous pouvez, au choix :
- Passer ce code en tant que configuration
cloud-init
chaque fois que vous créez une machine virtuelle. - Utiliser une directive
cloud-init
intégrée à l’image pour effectuer cette étape chaque fois que la machine virtuelle est créée :
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
- Passer ce code en tant que configuration
Désapprovisionnez la machine virtuelle et préparez son approvisionnement sur Azure :
sudo cloud-init clean sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Remarque
Si vous migrez une machine virtuelle spécifique et que vous ne souhaitez pas créer d’image généralisée, ignorez l’étape de désapprovisionnement.
Sélectionnez Action>Arrêter dans le Gestionnaire Hyper-V. Votre disque dur virtuel Linux est alors prêt pour le téléchargement dans Azure.
Contenu connexe
Vous êtes maintenant prêt à utiliser votre .vhd Oracle 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é.