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 dans un disque dur virtuel. Il existe de multiples outils dédiés à la création de fichiers .vhd, comme la solution de virtualisation Hyper-V. Pour obtenir des instructions, consultez la page Installation du rôle Hyper-V et configuration d'une machine virtuelle.

Notes générales d’installation d’Oracle Linux

  • Consultez également les Notes générales d’installation sous Linux pour obtenir d’autres conseils sur la préparation de Linux pour Azure.
  • 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, car il ne comporte 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 à l'aide de Hyper-V Manager ou de l’applet de commande convert-vhd.
  • La prise en charge du noyau pour le montage de systèmes de fichiers UDF est requise. Au premier démarrage sur Azure, la configuration d’approvisionnement est transmise à la machine virtuelle Linux via des supports au format UDF reliés à 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 des partitions standard plutôt que LVM (souvent la valeur par défaut 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. La technique LVM ou RAID peut être utilisée sur les disques de données, le cas échéant.
  • 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 impacte principalement les anciennes distributions utilisant le noyau Red Hat 2.6.32 en amont, et a été corrigé dans Oracle Linux 6.6 et versions ultérieures.
  • 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. Avant de convertir un disque brut en VHD, vous devez vous assurer que la taille du disque brut est un multiple de 1 Mo. Pour plus d’informations, consultez Notes d’installation sur 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 ligne enabled=0 par enabled=1 sous [ol6_addons] ou [ol7_addons] dans ce fichier.

Oracle Linux 6.x

Important

Tenez compte qu’Oracle Linux 6.x est déjà EOL. Oracle Linux version 6.10 dispose d’une prise en charge ELS, qui prendra fin en juillet 2024.

Vous devez suivre des étapes de configuration spécifiques dans le système d'exploitation afin que la machine virtuelle fonctionne sur Azure.

  1. Dans le panneau central de Hyper-V Manager, sélectionnez la machine virtuelle.

  2. Cliquez sur Connect pour ouvrir la fenêtre de la machine virtuelle.

  3. Exécutez la commande suivante pour désinstaller NetworkManager :

    sudo rpm -e --nodeps NetworkManager
    

    Notes

    Si le package n'est pas déjà installé, la commande échoue et un message d'erreur s'affiche. Ce message est attendu.

  4. Créez un fichier nommé network in the /etc/sysconfig/ et entrez-y le texte suivant :

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  5. 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
    
  6. Modifiez les règles udev pour éviter la génération de règles statiques pour les interfaces Ethernet. Ces règles peuvent causer des problèmes lors du clonage d’une machine virtuelle dans Microsoft 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
    
  7. Assurez-vous que le service réseau se lance au démarrage en exécutant la commande suivante :

    sudo chkconfig network on
    
  8. Saisissez la commande suivante pour installer python-pyasn1 :

    sudo yum install python-pyasn1
    
  9. 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 cela, ouvrez le fichier « /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 en matière de résolution des problèmes.

    En plus des éléments ci-dessus, 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ù nous souhaitons que tous les journaux soient envoyés au port série.

    L’option crashkernel peut éventuellement être conservée. Notez cependant que ce paramètre réduit la quantité de mémoire disponible dans la machine virtuelle de 128 Mo ou plus, ce qui peut être problématique sur les machines virtuelles plus petites.

  10. Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu. C'est généralement le cas par défaut.

  11. 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 entraîne la suppression des packages NetworkManager et NetworkManager-gnome, s'ils n'avaient pas déjà été supprimés à l'étape 2.

  12. 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 swap à l'aide du disque local de ressources connecté à la machine virtuelle après déploiement 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 Linux Azure (voir l'étape précédente), modifiez 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.
    
  13. Exécutez les commandes suivantes pour annuler le déploiement de la machine virtuelle et préparer son déploiement sur Azure :

    sudo waagent -force -deprovision
    sudo export HISTSIZE=0
    sudo logout
    
  14. Cliquez sur 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

Modifications dans Oracle Linux 7

La préparation d’une machine virtuelle Oracle Linux 7 pour Azure est similaire à Oracle Linux 6, avec quelques différences significatives :

  • Azure prend en charge Oracle Linux avec le noyau de l’entreprise (UEK) ou le noyau compatible Red Hat. Oracle Linux avec UEK est recommandé.
  • Le package NetworkManager n'est plus en conflit avec l'agent Azure Linux. Ce package est installé par défaut ; nous vous recommandons de ne pas le supprimer.
  • GRUB2 est maintenant utilisé comme chargeur de démarrage (bootloader) par défaut ; la modification des paramètres du noyau a donc changé (voir ci-dessous).
  • XFS est maintenant le système de fichiers par défaut. Le système de fichiers ext4 est toujours utilisable si vous le souhaitez.

Configuration

  1. Dans le Gestionnaire Hyper-V, sélectionnez la machine virtuelle.

  2. Cliquez sur Connecter pour ouvrir une fenêtre de console de la machine virtuelle.

  3. Créez un fichier nommé network in the /etc/sysconfig/ et entrez-y le texte suivant :

    NETWORKING=yes
    HOSTNAME=localhost.localdomain
    
  4. 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
    
  5. Modifiez les règles udev pour éviter la génération de règles statiques pour les interfaces Ethernet. Ces règles peuvent causer des problèmes lors du clonage d’une machine virtuelle dans Microsoft Azure ou Hyper-V :

    sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
    
  6. Assurez-vous que le service réseau se lance au démarrage en exécutant la commande suivante :

    sudo chkconfig network on
    
  7. Exécutez la commande suivante pour installer le package python-pyasn1 :

    sudo yum install python3-pyasn1
    
  8. Exécutez la commande suivante pour effacer les métadonnées yum actuelles et installer les mises à jour le cas échéant :

    sudo yum clean all
    sudo yum -y update
    
  9. 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 cela, ouvrez le fichier « /etc/default/grub » dans un éditeur de texte et modifiez le paramètre GRUB_CMDLINE_LINUX , par exemple :

    GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
    

    Ce permet également d'assurer que tous les messages de la console sont envoyés vers le premier port série, ce qui peut simplifier les problèmes de débogage pour la prise en charge d'Azure. Il désactive également les conventions d’affectation de noms pour les cartes réseau dans Oracle Linux 7 avec le noyau de l’entreprise. Outre les précautions ci-dessus, il est recommandé 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ù nous souhaitons que tous les journaux soient envoyés au port série.

    L’option crashkernel peut éventuellement être conservée. Notez cependant que ce paramètre réduit la quantité de mémoire disponible dans la machine virtuelle de 128 Mo ou plus, ce qui peut être problématique sur les machines virtuelles de petite taille.

  10. Lorsque vous avez fini de modifier le fichier « /etc/default/grub », exécutez la commande suivante pour régénérer la configuration grub :

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
  11. Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu. C'est généralement le cas par défaut.

  12. Installez l'agent Linux Azure et les dépendances :

    sudo yum install WALinuxAgent
    sudo systemctl enable waagent
    
  13. Installez cloud-init pour gérer l’approvisionnement :

    sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
    
  14. Configurez waagent pour cloud-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
    
  15. Changez de configuration. Ne créez pas d’espace d’échange sur le disque du système d’exploitation.

    Auparavant, l’agent Linux Azure était utilisé pour configurer automatiquement un espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle après l’approvisionnement de cette dernière sur Azure. Toutefois, comme cela est désormais géré par cloud-init, vous ne devez pas utiliser l’agent Linux pour formater le disque de ressources. Créez le fichier d’échange et 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 un échange, vous pouvez :

    • Transmettre ceci 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 qui effectuera cette opération 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
    
  16. Exécutez les commandes suivantes pour annuler le déploiement de la machine virtuelle et préparer son déploiement 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
    

    Notes

    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éprovisionnement.

  17. Cliquez sur Action > Arrêter dans le Gestionnaire Hyper-V. Votre disque dur virtuel Linux est alors prêt pour le téléchargement dans Azure.

Étapes suivantes

Vous êtes maintenant prêt à utiliser votre disque dur virtuel Oracle Linux .vhd 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é.