Table des matières
Mise à jour Esia - Debian 8 vers Debian 9
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 :
- 2. Prérequis : Nécessaire pour débuter la mise à jour.
- 3. Processus de mise à jour : Étapes nécessaires pour la réalisation de la mise à jour
- 4. Dépannage : Se rapporter à ce chapitre uniquement si vous rencontrez un souci au point 3.
- 5. Nettoyage : Pour récupérer de l'espace disque après la mise à jour.
Il est vivement conseillé voir nécessaire d'avoir lut 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 :
- D'avoir une connexion internet pour télécharger les paquets de mise à jour.
- Réaliser au préalable un snapshot de la VM afin de vite revenir à l'état précédent en cas de GROS problèmes.
- Réaliser quand même un backup de certains fichiers Esia. Pour éviter de faire un rollback du snapshot en cas de PETIT problème. Cette étape est NÉCESSAIRE en cas d'appel au support. Voir le point 3.1.1 « Faire un backup de votre Esia »
- De posséder un fichier licence Esia sous la main. (habituellement appelé esia.lic) sauf si vous avez une licence Mercury. Sinon, contactez votre gestionnaire de dossier ou partners.contact@esia-sa.com
É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 :
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 c'est bien réalisé en saisissant la commande suivante :
du -sh /root/BACKUP_ESIA/*
Exemples :
Sur un petit esia
root@debian-jessie:~# cd / root@debian-jessie:/# mkdir -p /root/BACKUP_ESIA root@debian-jessie:/# su postgres -c pg_dumpall > /root/BACKUP_ESIA/pg_database.sql root@debian-jessie:/# cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins root@debian-jessie:/# cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html root@debian-jessie:/# cp -r /etc/apache2 /root/BACKUP_ESIA/apache2 root@debian-jessie:/# cp -r /etc/esia /root/BACKUP_ESIA/esia_conf root@debian-jessie:/# iptables-save > /root/BACKUP_ESIA/iptables.txt root@debian-jessie:/# dpkg -l > /root/BACKUP_ESIA/version.txt root@debian-jessie:/# 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-jessie:/#
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-jessie:/# cd / root@debian-jessie:/# mkdir -p /root/BACKUP_ESIA root@debian-jessie:/# 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-jessie:/# cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins root@debian-jessie:/# cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html root@debian-jessie:/# cp -r /etc/apache2 /root/BACKUP_ESIA/apache2 root@debian-jessie:/# cp -r /etc/esia /root/BACKUP_ESIA/esia_conf root@debian-jessie:/# iptables-save > /root/BACKUP_ESIA/iptables.txt root@debian-jessie:/# dpkg -l > /root/BACKUP_ESIA/version.txt root@debian-jessie:/# 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-jessie:/#
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
chmod -x /usr/local/esia/plugins/alerting/*
Mise à jour
La mise à jour se déroule comme ceci :
- On modifie le fichier des sources de paquets pour indiquer qu'on passe en Jessie (commande sed)
- On met à jour la base de données système contenant la liste des paquets (commande apt-get update)
- On met à jour le système, (commande apt-get 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:
cat /etc/apt/sources.list
Vous devriez avoir les lignes suivantes:
deb http://deb.debian.org/debian jessie main contrib non-free deb-src http://deb.debian.org/debian jessie main contrib non-free deb http://stable.repository.esia-sa.com/esia jessie 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 jessies par stretch et mettre à jour la liste des paquets.
sed -i s/jessie/stretch/g /etc/apt/sources.list apt-get update
Exemple
root@debian-jessie:/# sed -i s/jessie/stretch/g /etc/apt/sources.list root@debian-jessie:/# apt-get update Get:1 http://10.8.0.9 stretch InRelease [2,271 B] Get:2 http://10.8.0.9 stretch/contrib amd64 Packages [7,200 B] Get:3 http://10.8.0.9 stretch/non-free amd64 Packages [1,963 B] Ign http://10.8.0.9 stretch/contrib Translation-en_US Ign http://10.8.0.9 stretch/contrib Translation-en Ign http://10.8.0.9 stretch/non-free Translation-en_US Ign http://10.8.0.9 stretch/non-free Translation-en Ign http://ftp.be.debian.org stretch InRelease Get:4 http://ftp.be.debian.org stretch Release.gpg [2,410 B] Get:5 http://ftp.be.debian.org stretch Release [118 kB] Get:6 http://ftp.be.debian.org stretch/main amd64 Packages [7,080 kB] Get:7 http://ftp.be.debian.org stretch/main Translation-en [5,377 kB] Fetched 12.6 MB in 2s (4,354 kB/s) Reading package lists... Done root@debian-jessie:/#
Vérifier l'état actuel de votre système :
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/jessie--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
apt-get -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-get dist-upgrade
Dans l'exemple ci-dessous, il faudra 392 MB + 935 MB pendant l'installation.
581 upgraded, 217 newly installed, 4 to remove and 0 not upgraded. Need to get 392 MB of archives. After this operation, 935 MB of additional disk space will be used. Do you want to continue? [Y/n]
- Pour toutes les questions posées, laissez la réponse par défaut
- Pour la question conçernant GRUB : il est nécessaire de ne pas se tromper et de bien cocher le bon disque de démarrage de la VM. Sinon celle-ci pourrait ne plus booter.
Exemples de questions posées
On réponds avec ENTER
Encore ENTER
TAB pour activer le 'OK', ensuite ENTER
On garde toujours réponse par défaut 'N', il suffit donc de faire ENTER
TAB pour activer le 'OK', ensuite ENTER
On coche les cases avec la barre d'espace. On se déplace avec les flèches. TAB pour activer le 'OK', ensuite ENTER
Il faut absolument cocher le disque de démarrage de la VM.
La mise à jour est terminée
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 license d'Esia, vous ne recevrez pas d'alertes. Mais une fois la license activée, il est possible que vous reçeviez de faux-positifs.
Il est donc préférable de rééxécuter la commande suivante avant l'activation de la license.
chmod -x /usr/local/esia/plugins/alerting/*
Supprimez les anciens paquets Debian Jessie
Cette étape est nécessaire, en plus de gagner en espace disque, gardez les anciennes versions de paquets pourrait :
- Causer des bugs dans Esia
- Causer des problèmes dans les mises à jour futur.
Il est donc vivement conseillé de réalisé 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 serait survenait plus tard de manière aléatoire.
apt-get 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 :
pg_lsclusters
Exemple
root@debian-jessie:/# pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.4 main 5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log 9.6 main 5433 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
root@debian-jessie:/# Supprimez la nouvelle base de donnée
pg_dropcluster 9.6 main --stop pg_lsclusters
Pour le pg_dropcluster bien mettre 9.6 et pas 9.4 !
Exemple
root@debian-jessie:/# pg_dropcluster 9.6 main --stop Redirecting stop request to systemctl root@debian-jessie:/# pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.4 main 5432 online postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log root@debian-jessie:/#
Copiez l'ancienne base de donnée (celle de votre Esia) vers la nouvelle version
pg_upgradecluster 9.4 main
pg_lsclusters
La première commande prends du temps a s'éxécuter. Une fois terminée, le pg_lscluster montre ceci :
Exemple
root@debian-jessie:/# pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.4 main 5433 down postgres /var/lib/postgresql/9.4/main /var/log/postgresql/postgresql-9.4-main.log 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log root@debian-jessie:/#
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.
a2dismod php5 a2enmod php7.0 service apache2 restart
Accèdez à la page web principale de votre Esia et ajoutez la licence
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. Une cela fait, vous remarquerez deux messages d'erreurs dans votre Esia :
Erreur le programme Esia n'est pas démarré
et
Licence non trouvée. cliquez ici
pour ajouter un fichier licence
Ces 2 messages d'erreurs sont liés, le démon Esia ne peut démarrer tant que la licence n'est pas activée.
Pour l'activer, il suffit de :
- Cliquer sur le lien
ici
du message d'erreur. - Cliquer sur le boutton
charger le fichier de licence
. - Cliquer sur le boutton
Appliquer
Le message d'erreur de la licence disparaît alors. Mais Erreur le programme Esia n'est pas démarré
est toujours présent. Voir étape suivante.
Attendre le rédémarrage du démon Esia ou lancez le manuellement
A cet étape, soit :
- Vous attendez quelques minutes (entre 0 et 5 minutes)
- Vous exécutez la commande suivante :
service esia restart
Le message d'erreur dans l'interface vas alors disparaître.
Tâches essentielles de fin de mise à jour
Vérifiez si votre VM redémarre
Rédé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
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.
Si on constate une grosse différence, soit :
- Des pannes sont survenues dans votre infrastructure
- Soit certains de vos plugins ne fonctionnent plus après la mise à jour. (Dans ce cas contactez notre support)
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 :
- l'activation de la licence.
- le reboot de la machine.
Ces alertes peuvent être causées :
- Par un problème dans votre infrastructure.
- Par un dysfonctionnement du plugin après la mise à jour.
Exemple :
Réactivez le système d'alerte
Une fois que votre Esia fonctionne correctement, n'oubliez pas de réactiver l'alerting :
Activation :
chmod +x /usr/local/esia/plugins/alerting/*
Vérifier si il est activé :
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 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.
Dépannage
La page Web est inaccessible
Configurer php7 dans Apache
Avez vous exécutez la commande suivante ?
a2dismod php5 a2enmod php7.0 service apache2 restart
Vérifiez le status du service Apache2
Tenter de redémarrer le service Apache2
service apache2 start service apache2 status
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.
- Suppression du snapshot
- Suppression du backup
rm -R /root/BACKUP_ESIA/
- Suppression de l'ancienne base de donnée (ATTENTION à bien mettre 9.4)
pg_dropcluster 9.4 main