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.
Avant de commencer la mise à jour, l’entièreté des points suivants doivent être remplis, il faut s'assurer :
Les 3 étapes suivantes sont a effectuer dans l'ordre souhaité.
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.
Vérifiez si vouz avez suffisament d'espace disque pour le backup via la commande :
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.
#!/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 :
du -sh /root/BACKUP_ESIA/*
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:/#
Afin de pouvoir revenir rapidement en cas de crash complet.
Pour éviter de reçevoir des faux-positifs pendant la mise à jour
chmod -x /usr/local/esia/plugins/alerting/*
La mise à jour se déroule comme ceci :
Vérifier le fichier apt source, via la commande suivante:
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).
nano /etc/apt/sources.list
Nous allons maintenant remplacer tout les buster par bullseye et mettre à jour la liste des paquets.
sed -i s/buster/bullseye/g /etc/apt/sources.list sed -i s#bullseye\/updates#bullseye-security#g /etc/apt/sources.list apt update
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:/#
Notez quelle heure il est.
Vérifier l'espace disque système via la commande ci-dessous :
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:/#
Pour télécharger la mise à jours ESIA + OS
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:
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]
On répond avec “Yes” puis ENTER
On garde toujours réponse par défaut 'N', il suffit donc de faire ENTER
La mise à jour est 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
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.
chmod -x /usr/local/esia/plugins/alerting/*
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.
apt autoremove
Confirmer ensuite la suppression.
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 :
pg_lsclusters
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
pg_dropcluster 13 main --stop pg_lsclusters
Pour le pg_dropcluster bien mettre 13 et pas 11 ! C'est vicieux !
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
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 :
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.
Après l'installation, il est nécessaire d'exécuter les commandes suivantes pour refaire fonctionner l'interface web.
a2dismod php7.3 a2enmod php7.4 service apache2 restart apt remove php7.3 apt autoremove
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.
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 :
shutdown -r now
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 :
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.
Si on constate une grosse différence, soit :
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 :
Une fois que votre Esia fonctionne correctement, n'oubliez pas de réactiver l'alerting :
chmod +x /usr/local/esia/plugins/alerting/*
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.
Alerting désactivé
Alerting activé
Il faut maintenant tester que vous recevez bien les mails d'alertes
/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.
La configuration du pare-feux interne d'Esia a peut-être supprimer l'autorisation de connexion des unitys. Taper la ligne de commande suivante
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:
iptables -A INPUT -p tcp -m tcp --dport 2080 -j ACCEPT iptables-save > /etc/iptables.rules
Avez vous exécutez la commande suivante ?
a2dismod php7.3 a2enmod php7.4 service apache2 restart
service apache2 status
Exemple de service Apache2 à l'arrêt :
Exemple de service Apache2 démarré :
service apache2 start service apache2 status
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.
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 :
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 !
apt install python3-cryptography
pip install pyspnego-0.10.2-py3-none-any.whl pip install pypsrp-0.8.1-py3-none-any.whl
Relancer un apt dist-upgrade pour qu'il finisse la configuration du package esia-rcm.
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 !
apt dist-upgrade
Vérifier que le package est bien installé et configuré :
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
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.