Table des matières

Mise à jour Esia - Debian 10 vers Debian 11

Introduction

Le processus de mise à jour dépend beaucoup de la personnalisation qui a été faite sur votre Esia au niveau plugins.

Plus vous avez de plugins ajoutés et plus ces plugins risques de passer en erreur après la mise à jour. Il est donc d'autant plus important de respecter le processus de backup en plus du snapshot afin d'éviter d'être obligé d'effectuer un rollback.

La suite du tuto parle de :

Il est vivement conseillé, voire nécessaire, d'avoir lu au moins 1 fois ce tuto en entier avant de démarrer la mise à jour en production.

Prérequis

Avant de commencer la mise à jour, l’entièreté des points suivants doivent être remplis, il faut s'assurer :

Étapes de mise à jour

Préparation pre-update

Les 3 étapes suivantes sont a effectuer dans l'ordre souhaité.

Faire un backup de votre Esia

Ceci permettra d'éviter le retour au snapshot en cas de simple erreur de plugin ou autre. Ces erreurs de plugins sont d'ailleurs parfois inévitables et rends donc cette tâche nécessaire.

Les étapes sont :

Vérifiez si vouz avez suffisament d'espace disque pour le backup via la commande :

copy
df -h /root

L'espace disque nécessaire pour le backup dépends de votre Esia. Mais si vous utilisez moins de 50% de votre espace disque. Vous êtes certain d en avoir suffisamment.

backup.sh
#!/bin/bash
cd /
mkdir -p /root/BACKUP_ESIA
su postgres -c pg_dumpall > /root/BACKUP_ESIA/pg_database.sql
cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins
cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html
cp -r /etc/apache2 /root/BACKUP_ESIA/apache2
cp -r /etc/esia /root/BACKUP_ESIA/esia_conf
iptables-save > /root/BACKUP_ESIA/iptables.txt
dpkg -l > /root/BACKUP_ESIA/version.txt

On peut vérifier si le backup s'est bien réalisé en saisissant la commande suivante :

copy
du -sh /root/BACKUP_ESIA/*
Exemples :

Sur un petit esia

root@debian-buster:~# cd /
root@debian-buster:/# mkdir -p /root/BACKUP_ESIA
root@debian-buster:/# su postgres -c pg_dumpall > /root/BACKUP_ESIA/pg_database.sql
root@debian-buster:/# cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins
root@debian-buster:/# cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html
root@debian-buster:/# cp -r /etc/apache2 /root/BACKUP_ESIA/apache2
root@debian-buster:/# cp -r /etc/esia /root/BACKUP_ESIA/esia_conf
root@debian-buster:/# iptables-save > /root/BACKUP_ESIA/iptables.txt
root@debian-buster:/# dpkg -l > /root/BACKUP_ESIA/version.txt
root@debian-buster:/# du -sh /root/BACKUP_ESIA/*
652K	/root/BACKUP_ESIA/apache2
32K	/root/BACKUP_ESIA/esia_conf
4,0K	/root/BACKUP_ESIA/iptables.txt
660K	/root/BACKUP_ESIA/pg_database.sql
7.9M	/root/BACKUP_ESIA/plugins
23M	/root/BACKUP_ESIA/public_html
96K	/root/BACKUP_ESIA/version.txt
root@debian-buster:/#

Sur un Esia de 150 noeuds/1800 services

root@enterprise-v3:~# cd /
root@enterprise-v3:/# mkdir -p /root/BACKUP_ESIA
root@enterprise-v3:/# su postgres -c pg_dumpall > /root/BACKUP_ESIA/pg_database.sql
root@enterprise-v3:/# cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins
root@enterprise-v3:/# cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html
root@enterprise-v3:/# cp -r /etc/apache2 /root/BACKUP_ESIA/apache2
root@enterprise-v3:/# cp -r /etc/esia /root/BACKUP_ESIA/esia_conf
root@enterprise-v3:/# iptables-save > /root/BACKUP_ESIA/iptables.txt
root@enterprise-v3:/# dpkg -l > /root/BACKUP_ESIA/version.txt
root@enterprise-v3:/# du -sh /root/BACKUP_ESIA/*
692K	/root/BACKUP_ESIA/apache2
32K	/root/BACKUP_ESIA/esia_conf
4,0K	/root/BACKUP_ESIA/iptables.txt
22M	/root/BACKUP_ESIA/pg_database.sql
9,1M	/root/BACKUP_ESIA/plugins
604M	/root/BACKUP_ESIA/public_html
116K	/root/BACKUP_ESIA/version.txt
root@enterprise-v3:/#

En cas d'erreur, on a des fichiers/répertoires absents ou vides

root@debian-buster:/# cd /
root@debian-buster:/# mkdir -p /root/BACKUP_ESIA
root@debian-buster:/# su postgres -c pg_dumpall > /root/BACKUP_ESIA/pg_database.sql
pg_dumpall: could not connect to database "template1": could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
root@debian-buster:/# cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins
root@debian-buster:/# cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html
root@debian-buster:/# cp -r /etc/apache2 /root/BACKUP_ESIA/apache2
root@debian-buster:/# cp -r /etc/esia /root/BACKUP_ESIA/esia_conf
root@debian-buster:/# iptables-save > /root/BACKUP_ESIA/iptables.txt
root@debian-buster:/# dpkg -l > /root/BACKUP_ESIA/version.txt
root@debian-buster:/# du -sh /root/BACKUP_ESIA/*
652K	/root/BACKUP_ESIA/apache2
32K	/root/BACKUP_ESIA/esia_conf
4,0K	/root/BACKUP_ESIA/iptables.txt
0	/root/BACKUP_ESIA/pg_database.sql
7.9M	/root/BACKUP_ESIA/plugins
23M	/root/BACKUP_ESIA/public_html
96K	/root/BACKUP_ESIA/version.txt
root@debian-buster:/#

Faire un snapshot de la VM

Afin de pouvoir revenir rapidement en cas de crash complet.

Désactiver le système d'alerting

Pour éviter de reçevoir des faux-positifs pendant la mise à jour

copy
chmod -x /usr/local/esia/plugins/alerting/*

Mise à jour

La mise à jour se déroule comme ceci :

  1. On modifie le fichier des sources de paquets pour indiquer qu'on passe en bullseye (commande sed)
  2. On met à jour la base de données système contenant la liste des paquets (commande apt update)
  3. On met à jour le système, (commande apt dist-upgrade). Avant d'exécuter cette commande, il est vivement conseillé de noter l'heure et vérifier l'état actuel de vos alertes. Ceci vous servira plus tard pour vérifier si les plugins Esia fonctionnent correctement après la mise à jour.

Préparer la mise à jour :

Vérifier le fichier apt source, via la commande suivante:

copy
cat /etc/apt/sources.list

Vous devriez avoir les lignes suivantes:

deb http://deb.debian.org/debian buster main contrib non-free
deb-src http://deb.debian.org/debian buster main contrib non-free
deb http://stable.repository.esia-sa.com/esia buster contrib non-free

Au besoin éditer le fichier avec la commande nano (ctrl + o pour sauvegarder et ctrl +x pour quitter).

copy
nano /etc/apt/sources.list

Nous allons maintenant remplacer tout les buster par bullseye et mettre à jour la liste des paquets.

copy
sed -i s/buster/bullseye/g /etc/apt/sources.list
sed -i s#bullseye\/updates#bullseye-security#g /etc/apt/sources.list
apt update
Exemple
root@debian-buster:/# sed -i s/buster/bullseye/g /etc/apt/sources.list
root@debian-buster:/# sed -i s#bullseye\/updates#bullseye-security#g /etc/apt/sources.list
root@debian-buster:/# apt update
Get:1 http://10.8.0.9 bullseye InRelease [2,271 B]
Get:2 http://10.8.0.9 bullseye/contrib amd64 Packages [7,200 B]
Get:3 http://10.8.0.9 bullseye/non-free amd64 Packages [1,963 B]
Ign http://10.8.0.9 bullseye/contrib Translation-en_US
Ign http://10.8.0.9 bullseye/contrib Translation-en
Ign http://10.8.0.9 bullseye/non-free Translation-en_US
Ign http://10.8.0.9 bullseye/non-free Translation-en
Ign http://ftp.be.debian.org bullseye InRelease
Get:4 http://ftp.be.debian.org bullseye Release.gpg [2,410 B]
Get:5 http://ftp.be.debian.org bullseye Release [118 kB]
Get:6 http://ftp.be.debian.org bullseye/main amd64 Packages [7,080 kB]
Get:7 http://ftp.be.debian.org bullseye/main Translation-en [5,377 kB]
Fetched 12.6 MB in 2s (4,354 kB/s)
Reading package lists... Done
root@debian-buster:/#

Vérifier l'état actuel de votre système :

  1. Faites un screenshot de l'état de vos noeuds et services.

    État des noeuds et services

  2. Notez quelle heure il est.

  3. Vérifier l'espace disque système via la commande ci-dessous :

copy
df -h |grep -v tmpfs|grep -v udev|grep -v /boot

Exemple :

root@enterprise-v3:/# df -h |grep -v tmpfs|grep -v udev|grep -v /boot
Sys. de fichiers                      Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/buster--students--vg-root    19G    7,7G  9,9G  44% /
root@enterprise-v3:/#

Lancer la mise à jour :

Pour télécharger la mise à jours ESIA + OS

copy
apt -d dist-upgrade

Avant de confirmer, vérifier si vous aurez suffisamment d'espace disque :

Ensuite exécutez la commande suivante pour appliquer et configurer les paquets:

copy
apt dist-upgrade

Dans l'exemple ci-dessous, il faudra 392 MB + 935 MB pendant l'installation.

498 upgraded, 148 newly installed, 5 to remove and 0 not upgraded.
Need to get 0 B/323 MB of archives.
After this operation, 652 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Exemples de questions posées

On répond avec “Yes” puis ENTER

Question 1

On garde toujours réponse par défaut 'N', il suffit donc de faire ENTER

Question 2

La mise à jour est terminée

Mise à jour terminée

S'il y a des erreurs sur esia-rcm, attendre que la mise à jour se termine et puis se rendre dans la section dépannage ⇒ Repository des librairies Python inaccessible

Remise en route post-update des modules importants

Désactivez à nouveau le système d'alerting

La mise à jour d'Esia réactive automatiquement le système d'alerting. Tant que vous n'activez pas la licence d'Esia, vous ne recevrez pas d'alertes. Mais une fois la licence activée, il est possible que vous receviez de faux-positifs.

Il est donc préférable de rééxécuter la commande suivante avant l'activation de la licence.

copy
chmod -x /usr/local/esia/plugins/alerting/*

Supprimez les anciens paquets Debian buster

Cette étape est nécessaire, en plus de gagner en espace disque, gardez les anciennes versions de paquets pourrait :

Il est donc vivement conseillé de réaliser cette étape même si votre Esia fonctionne maintenant correctement. De plus cela permet aussi de faire ressortir de suite des problèmes/bugs qui pourraient survenir plus tard de manière aléatoire.

copy
apt autoremove

Confirmer ensuite la suppression.

Mettez a jour votre base de donnée Esia

Les commandes suivantes permettes de mettre à jour votre base de donnée. Votre Esia fonctionne actuellement sans réaliser cette étape. Mais si vous l'ignorez des problèmes surviendront dans les mises à jour futur.

Vérifier la présence des bases de données :

copy
pg_lsclusters
Exemple
root@debian-buster:/# pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
11 main    5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
13 main    5433 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log

root@debian-buster:/# Supprimez la nouvelle base de donnée

copy
pg_dropcluster 13 main --stop
pg_lsclusters

Attention Pour le pg_dropcluster bien mettre 13 et pas 11 ! C'est vicieux !

Exemple
root@debian-buster:/# pg_dropcluster 13 main --stop
Redirecting stop request to systemctl
root@debian-buster:/# pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
11 main    5432 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
root@debian-buster:/#

Copiez l'ancienne base de donnée (celle de votre Esia) vers la nouvelle version

copy
pg_upgradecluster 11 main
pg_lsclusters

La première commande prends du temps a s’exécuter. Une fois terminée, le pg_lscluster montre ceci :

Exemple
root@debian-buster:/# pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
11 main    5433 down   postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
13 main    5432 online postgres /var/lib/postgresql/13/main /var/log/postgresql/postgresql-13-main.log
root@debian-buster:/#

Vérifiez ensuite si votre interface web fonctionne correctement.

Faire fonctionner l'interface web d'Esia

Après l'installation, il est nécessaire d'exécuter les commandes suivantes pour refaire fonctionner l'interface web.

copy
a2dismod php7.3
a2enmod php7.4
service apache2 restart
apt remove php7.3
apt autoremove

Accèdez à la page web principale de votre Esia

Après la mise à jour, connectez-vous sur votre serveur Esia et il faut impérativement rafraîchir votre cache Navigateur (ctrl +F5 sous Firefox). Les bugs des boutons de menu se corrigeront.

Tâches essentielles de fin de mise à jour

Vérifiez si votre VM redémarre

Redémarrez votre VM et vérifier si le redémarrage fonctionne. Une erreur de configuration de GRUB ou dans la mise à jour du système pourrait faire en sorte que la VM ne démarre plus. Ou que certains services Esia ne redémarre pas automatiquement.

Il est nécessaire d'effectuer cette opération tant que le snapshot est suffisamment afin d'évitez de perdre trop de données.

Pour rebooter de manière propre, saisissez la commande suivante :

copy
shutdown -r now

Vérifiez l'état de vos services

Certains plugins de monitoring pourraient ne plus fonctionnez après la mise à jour. C'est souvent le cas quand des plugins supplémentaires on été manuellement installés. Il est donc préférable de vérifier le fonctionnement de ceux-ci de 2 manières :

Méthode 1 : Véfifiez le status des noeuds et des services

Comparez l'état actuel de vos noeuds et services avec le screenshot pris précédemment, si on constate une différence faible/minime, alors, l'a mise à jour s'est probablement bien déroulée.

État des noeuds et services

Si on constate une grosse différence, soit :

Méthode 2 : Vérifiez si vous avez des nouvelles alertes

Rendez vous sur la page des alertes en cours. Si vous avez boucoup d'alertes, triez celles-ci par date.

Vous devriez avoir noté l'heure de début de la mise à jour. Utilisez cette info pour vérifier les alertes qui se sont déroulées après. Pour la plupart, dans les 10 minutes suivant :

Ces alertes peuvent être causées :

Exemple :

La mise à jour de 7h36 à probablement causé l'erreur de 7h44 dans un des plugins :

Page d'alertes en cours

Réactivez le système d'alerte

Une fois que votre Esia fonctionne correctement, n'oubliez pas de réactiver l'alerting :

Activation :
copy
chmod +x /usr/local/esia/plugins/alerting/*
Vérifier si il est activé :
copy
ls --color -l /usr/local/esia/plugins/alerting/*

On peut voir dans les exemples ci-dessous la couleur verte qui indique que le sripts sont éxécutables. Ils sont donc activés.

Exemples :

Alerting désactivé

Alerting désactivé

Alerting activé

Alerting activé

Il faut maintenant tester que vous recevez bien les mails d'alertes

copy
/usr/local/esia/plugins/alerting/send_mail_html.pl -e min -t <votre adresse mail> -D

Regardez si un mail est bien arrivé dans votre boite.

Dépannage

Toutes les unitys sont déconnectées

La configuration du pare-feux interne d'Esia a peut-être supprimer l'autorisation de connexion des unitys. Taper la ligne de commande suivante

copy
iptables -L

Si vous ne trouver pas une ligne du style:

ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:2080

Il faut taper les commandes suivantes, pour ouvrir le port et sauvegarder la configuration:

copy
iptables -A INPUT -p tcp -m tcp --dport 2080 -j ACCEPT
iptables-save > /etc/iptables.rules

La page Web est inaccessible

Configurer php7 dans Apache

Avez vous exécutez la commande suivante ?

copy
a2dismod php7.3
a2enmod php7.4
service apache2 restart

Vérifiez le status du service Apache2

copy
service apache2 status

Exemple de service Apache2 à l'arrêt :

Service Apache2 à l'arrêt

Exemple de service Apache2 démarré :

Service Apache2 démarré

Tenter de redémarrer le service Apache2

copy
service apache2 start
service apache2 status

Repository des librairies Python inaccessible

Si le package esia-rcm ne s'installe pas correctement, c'est probablement parce qu'il ne sait pas installer ses dépendances Python. Vérifier que le serveur peut joindre pypi.org en http. Si vous pouvez lui donner cet accès, passez l'étape suivante.

Installer les dépendances python manuellement

S'il est impossible de donner accès à pypi.org, on peut installer les librairies manquantes manuellement. Depuis un PC avec un accès internet, télécharger les fichiers suivants :

Ensuite, transférez-les sur le serveur Esia puis tapez les commandes suivantes :

Attention Pour les commandes apt bien lire ce qu'il va faire avant de valider et vérifier qu'il ne va pas supprimer de packages esia !

copy
apt install python3-cryptography
copy
pip install pyspnego-0.10.2-py3-none-any.whl
pip install pypsrp-0.8.1-py3-none-any.whl

Finaliser l'installation d'esia-rcm

Relancer un apt dist-upgrade pour qu'il finisse la configuration du package esia-rcm.

Attention Pour les commandes apt bien lire ce qu'il va faire avant de valider et vérifier qu'il ne va pas supprimer de packages esia !

copy
apt dist-upgrade

Vérifier que le package est bien installé et configuré :

copy
dpkg -l | grep esia-rcm

Devrait afficher ceci (le nom du package doit être précédé du tag ii) :

root@debian-bullseye:~# dpkg -l | grep esia-rcm
ii  esia-rcm                   0.0.3+1r0            all          Remote Control Manager

Nettoyage

Ce petit nettoyage, non obligatoire. Permet de gagner pas mal d'espace disque. Il est conseillé de réaliser les étapes suivantes une fois qu'on est certain que tous c'est bien déroulé. Voir même d'attendre plusieurs jours après la mise à jour.