News - Logiciels Libres

ELevate : Mettez à niveau CentOS 7 vers Alma Linux

ELevate : Mettez à niveau CentOS 7 vers Alma Linux
Bonjour à tous,

Dans cet article, on va parler de l'outil leapp mis à disposition dans le dépôt Elevate d'Alma Linux !

Cet outil va permettre de migrer d'élever (si je traduis littérallement) sa distribution CentOS 7 vers une variante d'EL en version 8, avec au choix :
- Alma Linux 8
- CentOS Stream 8
- Oracle Linux 8
- Rocky Linux 8

On remarquera l’ouverture d'esprit de l’équipe d'Alma Linux envers ses concurrentes !

Evidemment, ayant déjà parlé de mon choix post CentOS, et celui-ci étant Alma Linux, nous allons voir la migration de CentOS 7 vers Alma Linux 8.

A noter que je ne vous recommanderai jamais, sur un serveur en production de mettre à niveau votre système vers une autre version majeure. Cependant, sachez que c'est possible avec l'outil présenté ici.
L'outil est à ce jour en développement. Son usage est réservé à des tests (clone d'une VM de prod) pour remonter les anomalies.

Pour ceux qui ne me connaissent pas encore, j'exécute toutes les commandes en root, donc pas de commandes préfixées avec "sudo" !

Tout d'abord, on s'assurera que notre CentOS est à jour :

Code BASH :
yum update -y


Si une mise à jour du noyau est proposée, on rebootera le système :

Code BASH :
reboot


Une fois le système à jour, installez le dépôt elevate :

Code BASH :
yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm


Une fois fait, installez le paquet leapp-upgrade + le paquet leapp-data de la distribution voulue (remplacez almalinux par centos, oraclelinux ou rocky) :

Code BASH :
yum install -y leapp-upgrade leapp-data-almalinux


Une fois fait, on lance une vérification de l'upgrade via :

Code BASH :
leapp preupgrade


Voici des exemples de retours :

Code TEXT :
====> * scan_kernel_cmdline
        No documentation has been provided for the scan_kernel_cmdline actor.
====> * tcp_wrappers_config_read
        Parse tcp_wrappers configuration files /etc/hosts.{allow,deny}.
====> * scan_sap_hana
        Gathers information related to SAP HANA instances on the system.
 


On voit un certain nombre de paramètres testés.
Une fois le pré-upgrade terminé, on a un résumé :

Code TEXT :
============================================================
                     UPGRADE INHIBITED                      
============================================================
Upgrade has been inhibited due to the following problems:
    1. Inhibitor: Detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.
    2. Inhibitor: Possible problems with remote login using root account
    3. Inhibitor: Missing required answers in the answer file
Consult the pre-upgrade report for details and possible remediation.
============================================================
                     UPGRADE INHIBITED                      
============================================================
Debug output written to /var/log/leapp/leapp-preupgrade.log
============================================================
                           REPORT                           
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
                       END OF REPORT                        
============================================================
Answerfile has been generated at /var/log/leapp/answerfile
 


Dans mon cas, l'upgrade ne peut se faire car :
1. Inhibitor: Detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed.
2. Inhibitor: Possible problems with remote login using root account
3. Inhibitor: Missing required answers in the answer file

On a le détail dans le fichier /var/log/leapp/leapp-report.txt des conflits possibles avec les résolutions.

Pour le problème 1, on retirera les modules pata_acpi mptspi mptscsih mptbase,
Code BASH :
rmmod pata_acpi
rmmod mptspi
rmmod mptscsih
rmmod mptbase


Pour le problème 2, on va fixer PermitRootLogin à yes dans sshd_config
Code BASH :
vi /etc/ssh/sshd_config


Pour le problème 3, on peut saisir la commande suivante :
Code BASH :
leapp answer --section remove_pam_pkcs11_module_check.confirm=True

ou placer confirm = True dans la section [remove_pam_pkcs11_module_check]

On peut relancer un preupgrade avant l'upgrade si on veut !
Si tout est bon, on lance le début de l'upgrade avec :

Code BASH :
leapp upgrade


Une fois les vérifications faites, on voit le rafraichissement des dépôts :
Code TEXT :
====> * target_userspace_creator
        Initializes a directory to be populated as a minimal environment to run binaries from the target system.
AlmaLinux 8.4 - HighAvailability                1.8 MB/s | 603 kB     00:00    
AlmaLinux 8.4 - Extras                           54 kB/s |  10 kB     00:00    
AlmaLinux 8.4 - AppStream                        19 MB/s | 9.5 MB     00:00   


Puis le début du téléchargement des RPM. D'autres vérifications sont faites (transactions de tests) durant le processus.

On remarquera qu'une image initramfs spéciale pour l'upgrade est créée :

Code TEXT :
==> Processing phase `InterimPreparation`
====> * upgrade_initramfs_generator
        Creates the upgrade initramfs
====> * efi_interim_fix
        Adjust EFI boot entry for first reboot
====> * add_upgrade_boot_entry
        Add new boot entry for Leapp provided initramfs.
A reboot is required to continue. Please reboot your system.
 


En effet, le réel upgrade se fait au reboot (comme sur fedora avec dnf system-upgrade).

Les informations sont toutes en verte, avec les chemins vers les fichiers de logs :

Code TEXT :
 
Debug output written to /var/log/leapp/leapp-upgrade.log
============================================================
                           REPORT                           
============================================================
A report has been generated at /var/log/leapp/leapp-report.json
A report has been generated at /var/log/leapp/leapp-report.txt
============================================================
                       END OF REPORT                        
============================================================
Answerfile has been generated at /var/log/leapp/answerfile
 


Avant de reboot, on contrôle qu'on est bien encore sur CentOS 7 :

Code BASH :
cat /etc/os-release


Code TEXT :
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"



On reboot le système :

Code BASH :
reboot


On démarre automatiquement sur l'entrée précédemment générée dans le GRUB :

elevate-alma1



Et l'upgrade commence :

elevate-alma2



Il peut arriver, que le système ne reboot pas (ça m'est arrivé en rédigeant cet article avec une VM VMware équipée d'UEFI).
J'ai du ajouter manuellement l'entrée Alma Linux qui dispose d'un fichier efi dans le dossier almalinux cette fois-ci) !
Vous trouverez le report du bug ici : https://bugs.almalinux.org/view.php?id=134

Une fois le système rebooté, on contrôle qu'on est bien sous Alma Linux 8 :

Code BASH :
cat /etc/os-release


Code TEXT :
NAME="AlmaLinux"
VERSION="8.4 (Electric Cheetah)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.4"
PLATFORM_ID="platform:el8"
PRETTY_NAME="AlmaLinux 8.4 (Electric Cheetah)"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:almalinux:almalinux:8.4:GA"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"
ALMALINUX_MANTISBT_PROJECT="AlmaLinux-8"
ALMALINUX_MANTISBT_PROJECT_VERSION="8.4"
 


Evidemment, assurez vous que vos applications fonctionnent toujours, et adaptez les fichiers de configuration de vos services si besoin (Apache, MariaDB, PHP qui passe à php-fpm, etc.)