Préparation d'une machine virtuelle Red Hat pour Azure
S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles ✔️ Groupes identiques uniformes
Dans cet article, vous allez apprendre à préparer une machine virtuelle Red Hat Enterprise Linux (RHEL) à utiliser dans Azure. Les versions de RHEL abordées dans cet article sont 6.X, 7.X et 8.X. Les hyperviseurs de préparation abordés dans cet article sont Hyper-V, KVM (machine virtuelle basée sur un noyau) et VMware.
Pour plus d’informations sur les conditions d’éligibilité pour participer au programme Cloud Access de Red Hat, consultez le site web Red Hat Cloud Access et Exécution de RHEL sur Azure. Pour automatiser la génération d’images RHEL, consultez Azure VM Image Builder.
Remarque
Tenez compte des versions qui ont atteint la fin de vie (EOL) et qui ne sont plus prises en charge par Red Hat. Les images chargées dont la fin de vie est proche ou dépassée sont prises en charge sur la base d'un effort commercial raisonnable. Pour plus d’informations, consultez les cycles de vie des produits Red Hat.
Gestionnaire Hyper-V
Cette section vous montre comment préparer une machine virtuelle RHEL 6, RHEL 7 ou RHEL 8 à l’aide du Gestionnaire Hyper-V.
Prérequis
Cette section suppose que vous avez déjà obtenu un fichier ISO depuis le site web Red Hat et installé l’image RHEL sur un disque dur virtuel (VHD). Pour plus d’informations sur l’utilisation du Gestionnaire Hyper-V pour installer une image de système d’exploitation, consultez Installer Hyper-V et configurer une machine virtuelle.
Notes d'installation de RHEL
- Azure ne prend pas en charge le format VHDX. Azure prend uniquement en charge les VHD fixes. Vous pouvez utiliser Hyper-V Manager pour convertir le disque au format VHD, ou la cmdlet
convert-vhd
. Si vous utilisez VirtualBox, sélectionnez Taille fixe par opposition à l’option de valeur par défaut allouée dynamiquement lorsque vous créez le disque. - Azure prend en charge les machines virtuelles Gen1 (démarrage BIOS) et Gen2 (démarrage UEFI).
- La taille maximale autorisée pour le disque dur virtuel s’élève à 1 023 Go.
- Le module de noyau vfat doit être activé dans le noyau.
- Le gestionnaire des volumes logiques est pris en charge et peut être utilisé sur le disque de système d’exploitation ou les disques de données dans les machines virtuelles Azure. En règle générale, nous recommandons d’utiliser les partitions standard sur le disque de système d’exploitation plutôt que sur le gestionnaire des volumes logiques. Cette pratique évite les conflits de noms LVM avec les machines virtuelles clonées, notamment si vous devez attacher un disque de système d’exploitation à une autre machine virtuelle identique pour résoudre des problèmes. Pour plus d’informations, consultez la documentation LVM et RAID.
- La prise en charge du noyau pour le montage de systèmes de fichiers UDF (Universal Disk Format) est requise. Au premier démarrage sur Azure, le média au format UDF attaché à l’invité transmet la configuration d’approvisionnement à la machine virtuelle Linux. 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. Sans cette étape, l’approvisionnement échoue.
- Ne configurez pas de partition d’échange sur le disque du système d’exploitation. Pour plus d’informations, 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 étapes suivantes. Consultez également les notes d’installation de Linux.
Remarque
Cloud-init >= 21.2 supprime la nécessité du module UDF. Toutefois, si le module UDF n’est pas activé, le CD-ROM n’est pas monté pendant l’approvisionnement, ce qui empêche l’application des données personnalisées. Une solution de contournement consiste à appliquer des données personnalisées en utilisant des données utilisateur. Contrairement aux données personnalisées, les données utilisateur ne sont pas chiffrées. Pour plus d’informations, consultez Formats de données utilisateur.
RHEL 6 à l’aide de Gestionnaire Hyper-V
Important
Le 30 novembre 2020, RHEL 6 a atteint la fin de la phase de maintenance. La phase de maintenance est suivie de la phase de vie étendue. Alors que RHEL 6 quitte les phases Complète/Maintenance, nous vous recommandons vivement de procéder à la mise à niveau vers RHEL 7, 8 ou 9. Si vous devez rester sur RHEL 6, nous vous recommandons d’ajouter le module complémentaire de support de cycle de vie étendu RHEL.
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.
Dans RHEL 6,
NetworkManager
peut interférer avec l’agent Linux Azure. Désinstallez ce package :sudo rpm -e --nodeps NetworkManager
Créez ou modifiez le fichier
/etc/sysconfig/network
, puis ajoutez le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez ou modifiez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
, puis ajoutez le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Déplacez (ou supprimez) les règles udev afin d’éviter la génération de règles statiques pour l’interface Ethernet. Ces règles posent des problèmes quand vous clonez une machine virtuelle dans Azure ou Hyper-V :
Avertissement
De nombreuses tailles de machines virtuelles « v5 » et plus récentes nécessitent une mise en réseau accélérée. Si cette option n’est pas activée, NetworkManager attribuera la même adresse IP à toutes les interfaces de fonctions virtuelles. Pour éviter les adresses IP en double, veillez à inclure cette règle udev lorsque vous migrez vers une taille plus récente.
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
Remarque
Lorsque vous utilisez les performances réseau accélérées, l’interface synthétique créée doit être configurée pour être non managée à l’aide d’une règle udev. Cette action empêche
NetworkManager
d’attribuer la même adresse IP que l’interface principale.Pour l’appliquer :
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Assurez-vous que le service réseau se lance au démarrage :
sudo chkconfig network on
Inscrivez votre abonnement Red Hat pour activer l’installation des packages à partir du référentiel RHEL :
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Le package WALinuxAgent,
WALinuxAgent-<version>
, a fait l’objet d’une transmission de type push vers le référentiel Red Hat « extras ». Activez le référentiel extras :sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
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 modification, ouvrez
/boot/grub/menu.lst
dans un éditeur de texte. Vérifiez que le noyau par défaut inclut les paramètres suivants :console=ttyS0 earlyprintk=ttyS0
Cette action garantit également 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.
Nous vous recommandons également de supprimer les paramètres suivants :
rhgb quiet crashkernel=auto
Les démarrages graphiques et sans assistance ne sont pas utiles 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. Cette configuration peut poser un problème pour les tailles de machines virtuelles plus petites.Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu. Il s’agit généralement du réglage par défaut. Modifiez
/etc/ssh/sshd_config
pour y inclure la ligne suivante :ClientAliveInterval 180
Installez l’agent Linux Azure :
sudo yum install WALinuxAgent sudo chkconfig waagent on
L’installation du package WALinuxAgent supprime les packages
NetworkManager
etNetworkManager-gnome
si cela n’a pas déjà été fait à l’étape 3.Ne créez pas d’espace d’échange sur le disque du système d’exploitation.
L’agent Linux Azure peut configurer automatiquement l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée 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 lors de l’étape précédente, modifiez en conséquence les paramètres suivants dans
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Annulez l’inscription de l’abonnement (si nécessaire) :
sudo subscription-manager unregister
Supprimez les privilèges d'accès de la machine virtuelle et préparez son approvisionnement sur Azure :
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.
sudo waagent -force -deprovision sudo export HISTSIZE=0
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.
RHEL 7 à l’aide de Gestionnaire Hyper-V
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 ou modifiez le fichier
/etc/sysconfig/network
, puis ajoutez le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez ou modifiez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
, puis ajoutez le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Remarque
Lorsque vous utilisez les performances réseau accélérées, l’interface synthétique créée doit être configurée pour être non managée à l’aide d’une règle udev. Cette action empêche
NetworkManager
d’attribuer la même adresse IP que l’interface principale.Pour l’appliquer :
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Assurez-vous que le service réseau se lance au démarrage :
sudo systemctl enable network
Inscrivez votre abonnement Red Hat pour activer l’installation des packages à partir du référentiel RHEL :
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
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 modification, ouvrez le fichier
/etc/default/grub
dans un éditeur de texte et modifiez le paramètreGRUB_CMDLINE_LINUX
. Par exemple :GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" ENABLE_BLSCFG=true
Remarque
Si ENABLE_BLSCFG=false est présent dans
/etc/default/grub
au lieu deENABLE_BLSCFG=true
, des outils tels que grubedit ou gubby, qui reposent sur la spécification du chargeur de démarrage (BLS) pour la gestion des entrées et des configurations de démarrage, risquent de ne pas fonctionner correctement dans RHEL 8 et 9. SiENABLE_BLSCFG
est absent, le comportement par défaut estfalse
.Cette modification permet également d’assurer que tous les messages de la console sont envoyés au premier port série et garantit l’interaction avec la console série, ce qui peut aider le support Azure à déboguer les problèmes. Cette configuration désactive également les nouvelles conventions d’affectation de noms RHEL 7 pour les cartes d’interface réseau.
rhgb quiet crashkernel=auto
Les démarrages graphiques et sans assistance ne sont pas utiles 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.Une fois que vous avez terminé de modifier
/etc/default/grub
, exécutez la commande suivante pour régénérer la configuration de grub :sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Remarque
Si vous chargez une machine virtuelle UEFI, la commande pour mettre à jour grub est
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
.Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu, ce qui est généralement le réglage par défaut. Modifiez
/etc/ssh/sshd_config
pour y inclure la ligne suivante :ClientAliveInterval 180
Le package WALinuxAgent,
WALinuxAgent-<version>
, a fait l’objet d’une transmission de type push vers le référentiel Red Hat « extras ». Activez le référentiel extras :sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Installez l’agent Linux Azure,
cloud-init
, et d’autres utilitaires nécessaires :sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Configurez
cloud-init
pour gérer l’approvisionnement :Configurez
waagent
pourcloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=auto/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
Remarque
Si vous migrez une machine virtuelle spécifique et que vous ne souhaitez pas créer d’image généralisée, définissez
Provisioning.Agent=disabled
sur la configuration/etc/waagent.conf
.Configurez les montages :
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
Configurez la source de données Azure :
sudo 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
S’il est configuré, supprimez le fichier d’échange existant :
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by default swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Configurez la journalisation
cloud-init
:sudo echo "Add console log file" sudo 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.
Auparavant, l’agent Azure Linux était utilisé pour configurer automatiquement l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée sur Azure. Cette action est maintenant gérée par
cloud-init
. 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 :ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Si vous souhaitez monter, formater et créer l’échange, vous pouvez, au choix :
Transmettez ce code en tant que configuration
cloud-init
chaque fois que vous créez une machine virtuelle via des données personnalisées. Nous recommandons cette méthode.Utiliser une directive
cloud-init
intégrée à l’image qui effectue cette étape chaque fois que la machine virtuelle est créée.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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
Si vous souhaitez annuler l'inscription de l'abonnement, exécutez la commande suivante :
sudo subscription-manager unregister
Supprimez les privilèges d'accès de la machine virtuelle et préparez son approvisionnement sur Azure :
Attention
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 suppression des privilèges d’accès. L'exécution de la commande
waagent -force -deprovision+user
rend la machine source inutilisable. Cette étape est destinée uniquement à créer une image généralisée.sudo rm -f /var/log/waagent.log sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
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.
RHEL 8 utilisant Hyper-V Manager
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.
Assurez-vous que le service de gestionnaire de réseau se lance au démarrage :
sudo systemctl enable NetworkManager.service
Configurez l’interface réseau pour démarrer automatiquement au démarrage et utiliser le protocole DHCP :
sudo nmcli con mod eth0 connection.autoconnect yes ipv4.method auto
Remarque
Lorsque vous utilisez les performances réseau accélérées, l’interface synthétique créée doit être configurée pour être non managée à l’aide d’une règle udev. Cette action empêche
NetworkManager
d’attribuer la même adresse IP que l’interface principale.Pour l’appliquer :
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Inscrivez votre abonnement Red Hat pour activer l’installation des packages à partir du référentiel RHEL :
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Modifiez la ligne de démarrage du noyau dans votre configuration grub pour y inclure les paramètres de noyau supplémentaires pour Azure et activez la console série.
Supprimez les paramètres GRUB actuels :
sudo grub2-editenv - unset kernelopts
Modifiez
/etc/default/grub
dans un éditeur de texte, puis ajoutez les paramètres suivants :GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8 earlyprintk=ttyS0,115200 earlyprintk=ttyS0 net.ifnames=0" GRUB_TERMINAL_OUTPUT="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Cette modification permet également d’assurer que tous les messages de la console sont envoyés au premier port série et garantit l’interaction avec la console série, ce qui peut aider le support Azure à déboguer les problèmes. Cette configuration désactive également les nouvelles conventions d’affectation de noms pour les cartes réseau.
Nous vous recommandons de supprimer également !es paramètres suivants :
rhgb quiet crashkernel=auto
Les démarrages graphiques et sans assistance ne sont pas utiles 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.Une fois que vous avez terminé de modifier
/etc/default/grub
, exécutez la commande suivante pour régénérer la configuration de grub :sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Pour une machine virtuelle UEFI, exécutez la commande suivante :
sudo grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu, ce qui est généralement le réglage par défaut. Modifiez
/etc/ssh/sshd_config
pour y inclure la ligne suivante :ClientAliveInterval 180
Installez l’agent Linux Azure,
cloud-init
, et d’autres utilitaires nécessaires :sudo yum install -y WALinuxAgent cloud-init cloud-utils-growpart gdisk hyperv-daemons sudo systemctl enable waagent.service sudo systemctl enable cloud-init.service
Configurez
cloud-init
pour gérer l’approvisionnement :Configurez
waagent
pourcloud-init
:sudo sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/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
Remarque
Si vous migrez une machine virtuelle spécifique et que vous ne souhaitez pas créer d’image généralisée, définissez
Provisioning.Agent=disabled
sur la configuration/etc/waagent.conf
.Configurez les montages :
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
Configurez la source de données Azure :
sudo 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
S’il est configuré, supprimez le fichier d’échange existant :
if [[ -f /mnt/resource/swapfile ]]; then echo "Removing swapfile" #RHEL uses a swapfile by defaul swapoff /mnt/resource/swapfile rm /mnt/resource/swapfile -f fi
Configurez la journalisation
cloud-init
:sudo echo "Add console log file" sudo 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.
Auparavant, l’agent Azure Linux était utilisé pour configurer automatiquement l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée sur Azure. Cette action est maintenant gérée par
cloud-init
. 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 :ResourceDisk.Format=n ResourceDisk.EnableSwap=n
Transmettez ce code en tant que configuration
cloud-init
chaque fois que vous créez une machine virtuelle via des données personnalisées. Nous recommandons cette méthode.Utiliser une directive
cloud-init
intégrée à l’image qui effectue cette étape chaque fois que la machine virtuelle est créée.sudo echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf sudo 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.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF
Si vous souhaitez annuler l'inscription de l'abonnement, exécutez la commande suivante :
sudo subscription-manager unregister
Exécutez les commandes suivantes pour déprovisionner la machine virtuelle et préparer son provisionnement sur Azure :
sudo cloud-init clean sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo sudo rm -f /var/log/waagent.log sudo export HISTSIZE=0
Attention
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 suppression des privilèges d’accès. L'exécution de la commande
waagent -force -deprovision+user
rend la machine source inutilisable. Cette étape est destinée uniquement à créer une image généralisée.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.
KVM
Cette section vous montre comment utiliser KVM pour préparer une distribution RHEL 6 ou RHEL 7 à charger sur Azure.
RHEL 6 avec KVM
Important
Le 30 novembre 2020, RHEL 6 a atteint la fin de la phase de maintenance. La phase de maintenance est suivie de la phase de vie étendue. Alors que RHEL 6 quitte les phases Complète/Maintenance, nous vous recommandons vivement de procéder à la mise à niveau vers RHEL 7, 8 ou 9. Si vous devez rester sur RHEL 6, nous vous recommandons d’ajouter le module complémentaire de support de cycle de vie étendu RHEL.
Téléchargez l'image KVM de RHEL 6 depuis le site web Red Hat.
Définissez un mot de passe racine.
Générez un mot de passe chiffré et copiez la sortie de la commande :
sudo openssl passwd -1 changeme
Définissez un mot de passe racine avec guestfish :
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Remplacez le deuxième champ de l’utilisateur racine
!!
par le mot de passe chiffré.Créez une machine virtuelle dans KVM à partir de l’image qcow2. Définissez le type de disque sur qcow2, puis définissez le modèle d’appareil de l’interface réseau virtuelle sur virtio. Démarrez ensuite cette machine virtuelle, puis connectez-vous en tant qu’utilisateur root.
Créez ou modifiez le fichier
/etc/sysconfig/network
, puis ajoutez le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez ou modifiez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
, puis ajoutez le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Déplacez (ou supprimez) les règles udev afin d’éviter la génération de règles statiques pour l’interface Ethernet. Ces règles posent 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
Remarque
Lorsque vous utilisez les performances réseau accélérées, l’interface synthétique créée doit être configurée pour être non managée à l’aide d’une règle udev. Cette action empêche
NetworkManager
d’attribuer la même adresse IP que l’interface principale.Pour l’appliquer :
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Assurez-vous que le service réseau se lance au démarrage :
sudo chkconfig network on
Inscrivez votre abonnement Red Hat pour activer l’installation des packages à partir du référentiel RHEL :
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
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 configuration, ouvrez
/boot/grub/menu.lst
dans un éditeur de texte. Vérifiez que le noyau par défaut inclut les paramètres suivants :console=ttyS0 earlyprintk=ttyS0
Cette étape garantit également 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.
Nous vous recommandons également de supprimer les paramètres suivants :
rhgb quiet crashkernel=auto
Les démarrages graphiques et sans assistance ne sont pas utiles 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.Ajoutez des modules de Hyper-V dans initramfs :
Modifiez
/etc/dracut.conf
et ajoutez le contenu suivant :add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Régénérez initramfs :
sudo dracut -f -v
Désinstallez
cloud-init
:sudo yum remove cloud-init
Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu :
sudo chkconfig sshd on
Modifiez
/etc/ssh/sshd_config
pour y inclure les lignes suivantes :PasswordAuthentication yes ClientAliveInterval 180
Le package WALinuxAgent,
WALinuxAgent-<version>
, a fait l’objet d’une transmission de type push vers le référentiel Red Hat « extras ». Activez le référentiel extras :sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
Installez l’agent Linux Azure :
sudo yum install WALinuxAgent sudo chkconfig waagent on
L’agent Linux Azure peut configurer automatiquement l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée 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 lors de l’étape précédente, modifiez en conséquence les paramètres suivants dans
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Annulez l’inscription de l’abonnement (si nécessaire) :
sudo subscription-manager unregister
Exécutez les commandes suivantes pour supprimer les privilèges d'accès de la machine virtuelle et préparer son provisionnement sur Azure.
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 suppression des privilèges d’accès.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Arrêtez la machine virtuelle dans KVM.
Convertissez l’image qcow2 au format VHD.
Remarque
Il existe un bogue connu dans les versions de >= 2.2.1, qui entraîne un formatage incorrect du VHD. Ce problème a été résolu dans QEMU 2.6. Nous vous recommandons d’utiliser qemu-img version 2.2.0 ou antérieure, ou d’effectuer une mise à jour vers la version 2.6 ou supérieure. Pour plus d’informations, consultez ce site web.
Convertissez tout d'abord l'image au format RAW :
sudo qemu-img convert -f qcow2 -O raw rhel-6.9.qcow2 rhel-6.9.raw
Assurez-vous que la taille de l’image RAW est alignée sur 1 Mo. Dans le cas contraire, arrondissez la taille pour l’aligner sur 1 Mo :
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Convertissez le disque brut en VHD à taille fixe :
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Sinon, avec qemu version 2.6+, incluez l’option
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 avec KVM
Téléchargez l'image KVM de RHEL 7 depuis le site web Red Hat. Cette procédure utilise RHEL 7 comme un exemple.
Définissez un mot de passe racine.
Générez un mot de passe chiffré et copiez la sortie de la commande :
sudo openssl passwd -1 changeme
Définissez un mot de passe racine avec guestfish :
sudo guestfish --rw -a <image-name> > <fs> run > <fs> list-filesystems > <fs> mount /dev/sda1 / > <fs> vi /etc/shadow > <fs> exit
Remplacez le deuxième champ de l’utilisateur racine
!!
par le mot de passe chiffré.Créez une machine virtuelle dans KVM à partir de l’image qcow2. Définissez le type de disque sur qcow2, puis définissez le modèle d’appareil de l’interface réseau virtuelle sur virtio. Démarrez ensuite cette machine virtuelle, puis connectez-vous en tant qu’utilisateur root.
Créez ou modifiez le fichier
/etc/sysconfig/network
, puis ajoutez le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez ou modifiez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
, puis ajoutez le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Remarque
Lorsque vous utilisez les performances réseau accélérées, l’interface synthétique créée doit être configurée pour être non managée à l’aide d’une règle udev. Cette action empêche
NetworkManager
d’attribuer la même adresse IP que l’interface principale.Pour l’appliquer :
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Assurez-vous que le service réseau se lance au démarrage :
sudo systemctl enable network
Inscrivez votre abonnement Red Hat pour activer l’installation de packages à partir du référentiel RHEL :
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
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 configuration, ouvrez le fichier
/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 commande 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. Cette commande désactive également les nouvelles conventions d’affectation de noms RHEL 7 pour les cartes réseau. Nous vous recommandons également de supprimer les paramètres suivants :
rhgb quiet crashkernel=auto
Les démarrages graphiques et sans assistance ne sont pas utiles 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.Une fois que vous avez terminé de modifier
/etc/default/grub
, exécutez la commande suivante pour régénérer la configuration de grub :sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Ajoutez des modules de Hyper-V dans initramfs.
Modifiez
/etc/dracut.conf
en y ajoutant le contenu suivant :add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Régénérez initramfs :
sudo dracut -f -v
Désinstallez
cloud-init
:sudo yum remove cloud-init
Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu :
sudo systemctl enable sshd
Modifiez
/etc/ssh/sshd_config
pour y inclure les lignes suivantes :PasswordAuthentication yes ClientAliveInterval 180
Le package WALinuxAgent,
WALinuxAgent-<version>
, a fait l’objet d’une transmission de type push vers le référentiel Red Hat « extras ». Activez le référentiel extras :sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Installez l’agent Linux Azure :
sudo yum install WALinuxAgent
Activez le service
waagent
:sudo systemctl enable waagent.service
Installez
cloud-init
.Suivez les étapes décrites dans « Préparer une machine virtuelle RHEL 7 à partir du Gestionnaire Hyper-V », étape 12, « Installer
cloud-init
pour gérer l’approvisionnement ».Configuration de l’échange :
- Ne créez pas d’espace d’échange sur le disque du système d’exploitation.
- Suivez les étapes de la section « Préparer une machine virtuelle RHEL 7 à partir du Gestionnaire Hyper-V », étape 13, « Configuration de l’échange ».
Annulez l’inscription de l’abonnement (si nécessaire) :
sudo subscription-manager unregister
Supprimez les privilèges d’accès en suivant les étapes décrites dans « Préparer une machine virtuelle RHEL 7 à partir du Gestionnaire Hyper-V », étape 15, « Déprovisionner ».
Arrêtez la machine virtuelle dans KVM.
Convertissez l’image qcow2 au format VHD.
Remarque
Il existe un bogue connu dans les versions de >= 1.1.1, qui entraîne un formatage incorrect du VHD. Ce problème a été résolu dans QEMU 1.6. Nous vous recommandons d’utiliser qemu-img version 1.1.0 ou antérieure, ou d’effectuer une mise à jour vers la version 1.6 ou supérieure. Pour plus d’informations, consultez ce site web.
Convertissez tout d'abord l'image au format RAW :
sudo qemu-img convert -f qcow2 -O raw rhel-7.4.qcow2 rhel-7.4.raw
Assurez-vous que la taille de l’image RAW est alignée sur 1 Mo. Dans le cas contraire, arrondissez la taille pour l’aligner sur 1 Mo :
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Convertissez le disque brut en VHD à taille fixe :
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Sinon, avec qemu version 1.6+, incluez l’option
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
VMware
Cette section vous montre comment préparer une distribution RHEL 6 ou RHEL 7 à partir de VMware.
Prérequis
Cette section part de l’hypothèse que vous avez déjà installé une machine virtuelle RHEL dans VMware. Pour plus d’informations sur l’installation d’un système d’exploitation dans VMware, consultez le Guide d’installation de système d’exploitation invité VMware.
- Lorsque vous installez le système d’exploitation Linux, nous vous recommandons d’utiliser les partitions standard plutôt que LVM, ce qui constitue souvent le choix par défaut pour de nombreuses installations. L’utilisation de partitions évite les conflits de noms LVM avec une machine virtuelle clonée, notamment si vous devez attacher un disque de système d’exploitation à une autre machine virtuelle pour résoudre des problèmes. Vous pouvez utiliser les techniques LVM ou RAID sur les disques de données si vous le souhaitez.
- Ne configurez pas de partition d’échange sur le disque du système d’exploitation. Vous pouvez configurer l’agent Linux pour la création d’un fichier d’échange sur le disque de ressources temporaire. Pour plus d’informations, consultez les étapes suivantes.
- Lorsque vous créez le disque dur virtuel, sélectionnez Stocker le disque virtuel en tant que fichier unique.
RHEL 6 avec VMware
Important
Le 30 novembre 2020, RHEL 6 a atteint la fin de la phase de maintenance. La phase de maintenance est suivie de la phase de vie étendue. Alors que RHEL 6 quitte les phases Complète/Maintenance, nous vous recommandons vivement de procéder à la mise à niveau vers RHEL 7, 8 ou 9. Si vous devez rester sur RHEL 6, nous vous recommandons d’ajouter le module complémentaire de support de cycle de vie étendu RHEL.
Dans RHEL 6,
NetworkManager
peut interférer avec l’agent Linux Azure. Désinstallez ce package :sudo rpm -e --nodeps NetworkManager
Créez un fichier nommé network in the
/etc/sysconfig/
et entrez-y le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez ou modifiez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
, puis ajoutez le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
Déplacez (ou supprimez) les règles udev afin d’éviter la génération de règles statiques pour l’interface Ethernet. Ces règles posent 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
Remarque
Lorsque vous utilisez les performances réseau accélérées, l’interface synthétique créée doit être configurée pour être non managée à l’aide d’une règle udev. Cette action empêche
NetworkManager
d’attribuer la même adresse IP que l’interface principale.Pour l’appliquer :
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparently bonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Assurez-vous que le service réseau se lance au démarrage :
sudo chkconfig network on
Inscrivez votre abonnement Red Hat pour activer l’installation des packages à partir du référentiel RHEL :
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
Le package WALinuxAgent,
WALinuxAgent-<version>
, a fait l’objet d’une transmission de type push vers le référentiel Red Hat « extras ». Activez le référentiel extras :sudo subscription-manager repos --enable=rhel-6-server-extras-rpms
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"
Cette étape garantit également 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. Nous vous recommandons également de supprimer les paramètres suivants :
rhgb quiet crashkernel=auto
Les démarrages graphiques et sans assistance ne sont pas utiles 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.Ajoutez des modules de Hyper-V dans initramfs :
Modifiez
/etc/dracut.conf
et ajoutez le contenu suivant :add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Régénérez initramfs :
sudo dracut -f -v
Vérifiez que le serveur SSH est installé et configuré pour démarrer au moment prévu, ce qui est généralement le réglage par défaut. Modifiez
/etc/ssh/sshd_config
pour y inclure la ligne suivante :ClientAliveInterval 180
Installez l’agent Linux Azure :
sudo yum install WALinuxAgent sudo chkconfig waagent on
Ne créez pas d’espace d’échange sur le disque du système d’exploitation.
L’agent Linux Azure peut configurer automatiquement l’espace d’échange à l’aide du disque de ressources local attaché à la machine virtuelle une fois celle-ci approvisionnée 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 lors de l’étape précédente, modifiez en conséquence les paramètres suivants dans
/etc/waagent.conf
:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt/resource ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
Annulez l’inscription de l’abonnement (si nécessaire) :
sudo subscription-manager unregister
Exécutez les commandes suivantes pour déprovisionner la machine virtuelle et préparer son provisionnement sur Azure :
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 suppression des privilèges d’accès.
sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user sudo rm -f ~/.bash_history sudo export HISTSIZE=0
Arrêtez la machine virtuelle, puis convertissez le fichier VMDK en fichier .vhd.
Remarque
Il existe un bogue connu dans les versions de >= 2.2.1, qui entraîne un formatage incorrect du VHD. Ce problème a été résolu dans QEMU 2.6. Nous vous recommandons d’utiliser qemu-img version 2.2.0 ou antérieure, ou d’effectuer une mise à jour vers la version 2.6 ou supérieure. Pour plus d’informations, consultez ce site web.
Convertissez tout d'abord l'image au format RAW :
sudo qemu-img convert -f vmdk -O raw rhel-6.9.vmdk rhel-6.9.raw
Assurez-vous que la taille de l’image RAW est alignée sur 1 Mo. Dans le cas contraire, arrondissez la taille pour l’aligner sur 1 Mo :
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-6.9.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-6.9.raw $rounded_size
Convertissez le disque brut en VHD à taille fixe :
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-6.9.raw rhel-6.9.vhd
Sinon, avec qemu version 2.6+, incluez l’option
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-6.9.raw rhel-6.9.vhd
RHEL 7 avec VMware
Créez ou modifiez le fichier
/etc/sysconfig/network
, puis ajoutez le texte suivant :NETWORKING=yes HOSTNAME=localhost.localdomain
Créez ou modifiez le fichier
/etc/sysconfig/network-scripts/ifcfg-eth0
, puis ajoutez le texte suivant :DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes
Remarque
Lorsque vous utilisez les performances réseau accélérées, l’interface synthétique créée doit être configurée pour être non managée à l’aide d’une règle udev. Cette action empêche
NetworkManager
d’attribuer la même adresse IP que l’interface principale.Pour l’appliquer :
sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF
Assurez-vous que le service réseau se lance au démarrage :
sudo systemctl enable network
Inscrivez votre abonnement Red Hat pour activer l’installation des packages à partir du référentiel RHEL :
sudo subscription-manager register --auto-attach --username=XXX --password=XXX
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 modification, ouvrez le fichier
/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 configuration 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. Cela désactive également les nouvelles conventions d’affectation de noms RHEL 7 pour les cartes réseau. De plus, nous vous recommandons de supprimer les paramètres suivants :
rhgb quiet crashkernel=auto
Les démarrages graphiques et sans assistance ne sont pas utiles 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.Une fois que vous avez terminé de modifier
/etc/default/grub
, exécutez la commande suivante pour régénérer la configuration de grub :sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Ajoutez des modules de Hyper-V dans initramfs :
Modifiez
/etc/dracut.conf
, ajoutez le contenu :add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Régénérez initramfs :
sudo dracut -f -v
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. Modifiez
/etc/ssh/sshd_config
pour y inclure la ligne suivante :ClientAliveInterval 180
Le package WALinuxAgent,
WALinuxAgent-<version>
, a fait l’objet d’une transmission de type push vers le référentiel Red Hat « extras ». Activez le référentiel extras :sudo subscription-manager repos --enable=rhel-7-server-extras-rpms
Installez l’agent Linux Azure :
sudo yum install WALinuxAgent sudo systemctl enable waagent.service
Installez
cloud-init
:Suivez les étapes décrites dans « Préparer une machine virtuelle RHEL 7 à partir du Gestionnaire Hyper-V », étape 12, « Installer
cloud-init
pour gérer l’approvisionnement ».Configuration de l’échange :
- Ne créez pas d’espace d’échange sur le disque du système d’exploitation.
- Suivez les étapes de la section « Préparer une machine virtuelle RHEL 7 à partir du Gestionnaire Hyper-V », étape 13, « Configuration de l’échange ».
Si vous souhaitez annuler l'inscription de l'abonnement, exécutez la commande suivante :
sudo subscription-manager unregister
Supprimez les privilèges d’accès en suivant les étapes décrites dans « Préparer une machine virtuelle RHEL 7 à partir du Gestionnaire Hyper-V », étape 15, « Déprovisionner ».
Arrêtez la machine virtuelle et convertissez le fichier VMDK au format VHD.
Remarque
Il existe un bogue connu dans les versions de >= 2.2.1, qui entraîne un formatage incorrect du VHD. Ce problème a été résolu dans QEMU 2.6. Nous vous recommandons d’utiliser qemu-img version 2.2.0 ou antérieure, ou d’effectuer une mise à jour vers la version 2.6 ou supérieure. Pour plus d’informations, consultez ce site web.
Convertissez tout d'abord l'image au format RAW :
sudo qemu-img convert -f vmdk -O raw rhel-7.4.vmdk rhel-7.4.raw
Assurez-vous que la taille de l’image RAW est alignée sur 1 Mo. Dans le cas contraire, arrondissez la taille pour l’aligner sur 1 Mo :
MB=$((1024*1024)) size=$(qemu-img info -f raw --output json "rhel-7.4.raw" | \ gawk 'match($0, /"virtual-size": ([0-9]+),/, val) {print val[1]}') rounded_size=$((($size/$MB + 1)*$MB)) sudo qemu-img resize rhel-7.4.raw $rounded_size
Convertissez le disque brut en VHD à taille fixe :
sudo qemu-img convert -f raw -o subformat=fixed -O vpc rhel-7.4.raw rhel-7.4.vhd
Sinon, avec qemu version 2.6+, incluez l’option
force_size
:sudo qemu-img convert -f raw -o subformat=fixed,force_size -O vpc rhel-7.4.raw rhel-7.4.vhd
Fichier kickstart
Cette section vous montre comment préparer une distribution RHEL 7 à partir d’une image ISO à l’aide d’un fichier kickstart.
RHEL 7 à partir d’un fichier kickstart
Créez un fichier qui inclut le contenu suivant et enregistrez-le. Pour plus d’informations sur l’installation de Kickstart, consultez le Guide d’installation Kickstart.
# Kickstart for provisioning a RHEL 7 Azure VM # System authorization information auth --enableshadow --passalgo=sha512 # Use graphical install text # Don't run the Setup Agent on first boot firstboot --disable # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information network --bootproto=dhcp # Root password rootpw --plaintext "to_be_disabled" # System services services --enabled="sshd,waagent,NetworkManager" # System timezone timezone Etc/UTC --isUtc --ntpservers 0.rhel.pool.ntp.org,1.rhel.pool.ntp.org,2.rhel.pool.ntp.org,3.rhel.pool.ntp.org # Partition clearing information clearpart --all --initlabel # Clear the MBR zerombr # Disk partitioning information part /boot --fstype="xfs" --size=500 part / --fstyp="xfs" --size=1 --grow --asprimary # System bootloader configuration bootloader --location=mbr # Firewall configuration firewall --disabled # Enable SELinux selinux --enforcing # Don't configure X skipx # Power down the machine after install poweroff %packages @base @console-internet chrony sudo parted -dracut-config-rescue %end %post --log=/var/log/anaconda/post-install.log #!/bin/bash # Register Red Hat Subscription subscription-manager register --username=XXX --password=XXX --auto-attach --force # Install latest repo update yum update -y # Enable extras repo subscription-manager repos --enable=rhel-7-server-extras-rpms # Install WALinuxAgent yum install -y WALinuxAgent # Unregister Red Hat subscription subscription-manager unregister # Enable waaagent at boot-up systemctl enable waagent # Install cloud-init yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons # Configure waagent for cloud-init sed -i 's/Provisioning.Agent=auto/Provisioning.Agent=cloud-init/g' /etc/waagent.conf sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf echo "Adding mounts and disk_setup to init stage" sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg # Disable the root account usermod root -p '!!' # Configure swap using cloud-init 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"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.device-timeout=2,x-systemd.requires=cloud-init.service", "0", "0"] EOF # Set the cmdline sed -i 's/^\(GRUB_CMDLINE_LINUX\)=".*"$/\1="console=tty1 console=ttyS0 earlyprintk=ttyS0"/g' /etc/default/grub # Enable SSH keepalive sed -i 's/^#\(ClientAliveInterval\).*$/\1 180/g' /etc/ssh/sshd_config # Build the grub cfg grub2-mkconfig -o /boot/grub2/grub.cfg # Configure network cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no PERSISTENT_DHCLIENT=yes NM_CONTROLLED=yes EOF sudo cat <<EOF>> /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules # Accelerated Networking on Azure exposes a new SRIOV interface to the VM. # This interface is transparentlybonded to the synthetic interface, # so NetworkManager should just ignore any SRIOV interfaces. SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1" EOF # Deprovision and prepare for Azure if you are creating a generalized image sudo cloud-init clean --logs --seed sudo rm -rf /var/lib/cloud/ sudo rm -rf /var/lib/waagent/ sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision+user rm -f ~/.bash_history export HISTSIZE=0 %end
Placez le fichier Kickstart à un emplacement auquel système d’installation peut accéder.
Créez une machine virtuelle dans le Gestionnaire Hyper-V. Sur la page Connecter un disque dur virtuel, sélectionnez Attacher un disque dur virtuel ultérieurement, puis exécutez l’Assistant Nouvelle machine virtuelle.
Ouvrez les paramètres de la machine virtuelle :
Attachez un nouveau disque dur virtuel à la machine virtuelle. Veillez à sélectionner Format VHD et Taille fixe.
Attachez l’ISO d’installation au lecteur de DVD.
Configurez le BIOS de manière à exécuter le démarrage à partir d’un CD.
Démarrez la machine virtuelle. Lorsque le guide d’installation s’affiche, sélectionnez la touche Tab pour configurer les options de démarrage.
Entrez
inst.ks=<the location of the kickstart file>
à la fin des options de démarrage, puis sélectionnez la touche Entrée.Attendez que l'installation se termine. Une fois l’opération effectuée, la machine virtuelle s’arrête automatiquement. Votre disque dur virtuel Linux est alors prêt pour le téléchargement dans Azure.
Problèmes connus
Le problème suivant est connu.
Impossible d’inclure le pilote Hyper-V dans le disque virtuel initial en cas d’utilisation d’un hyperviseur non Hyper-V
Dans certains cas, les programmes d’installation Linux n’incluent pas les pilotes pour Hyper-V dans le disque virtuel initial (initrd ou initramfs), sauf si Linux détecte qu’il s’exécute dans un environnement Hyper-V.
Lorsque vous utilisez un système de virtualisation différent (comme VirtualBox ou Xen) pour préparer votre image Linux, vous devrez peut-être régénérer initrd pour vous assurer qu'au moins les modules de noyau hv_vmbus
et hv_storvsc
soient disponibles sur le disque RAM initial. Il s’agit d’un problème connu, touchant au moins les systèmes basés sur la distribution Red Hat en amont.
Pour résoudre ce problème, ajoutez des modules Hyper-V dans initramfs, puis régénérez ce dernier :
Modifiez /etc/dracut.conf
et ajoutez le contenu suivant :
add_drivers+=" hv_vmbus hv_netvsc hv_storvsc "
Régénérez initramfs :
sudo dracut -f -v
Pour plus d’informations, consultez Régénération d’initramfs.
Contenu connexe
- Vous êtes maintenant prêt à utiliser votre disque dur virtuel RHEL 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é.
- Pour plus d’informations sur les hyperviseurs certifiés pour l’exécution de RHEL, consultez le site web de Red Hat.
- Pour en savoir plus sur l’utilisation d’images RHEL BYOS prêtes pour la production, accédez à la page de documentation relative à Apporter votre propre abonnement (BYOS).