Outils

Outils de compte

Outils de recherche


Mise à jour Esia - Debian 12 vers Debian 13

Introduction

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

Plus vous ajoutez de plugins, plus les chances que ceux-ci causent une erreur après une mise à jour augmentent. 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 fortement conseillé, voire nécessaire, d’avoir lu au moins une fois en entier ce tutoriel avant de commencer la mise à jour en production.

Prérequis

Avant de commencer la mise à jour, l’entièreté des points suivants doit être remplie, 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 »

Étapes de mise à jour

Préparation préupdate

Les quatre étapes suivantes sont à 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 vous avez suffisamment d'espace disque pour le backup via la commande :

copy
df -h /

L'espace disque nécessaire pour le backup dépend 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-bookworm:~# cd /
root@debian-bookworm:/# mkdir -p /root/BACKUP_ESIA
root@debian-bookworm:/# su postgres -c pg_dumpall > /root/BACKUP_ESIA/pg_database.sql
root@debian-bookworm:/# cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins
root@debian-bookworm:/# cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html
root@debian-bookworm:/# cp -r /etc/apache2 /root/BACKUP_ESIA/apache2
root@debian-bookworm:/# cp -r /etc/esia /root/BACKUP_ESIA/esia_conf
root@debian-bookworm:/# iptables-save > /root/BACKUP_ESIA/iptables.txt
root@debian-bookworm:/# dpkg -l > /root/BACKUP_ESIA/version.txt
root@debian-bookworm:/# 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-bookworm:/#

Sur une plateforme Esia de 150 nœuds/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-bookworm:/# cd /
root@debian-bookworm:/# mkdir -p /root/BACKUP_ESIA
root@debian-bookworm:/# 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-bookworm:/# cp -r /usr/local/esia/plugins /root/BACKUP_ESIA/plugins
root@debian-bookworm:/# cp -r /usr/local/esia/public_html /root/BACKUP_ESIA/public_html
root@debian-bookworm:/# cp -r /etc/apache2 /root/BACKUP_ESIA/apache2
root@debian-bookworm:/# cp -r /etc/esia /root/BACKUP_ESIA/esia_conf
root@debian-bookworm:/# iptables-save > /root/BACKUP_ESIA/iptables.txt
root@debian-bookworm:/# dpkg -l > /root/BACKUP_ESIA/version.txt
root@debian-bookworm:/# 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-bookworm:/#

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 recevoir des faux positifs pendant la mise à jour

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

Vérifier les fichiers source APT

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 bookworm main contrib non-free
deb-src http://deb.debian.org/debian bookworm main contrib non-free
deb http://stable.repository.esia-sa.com/esia bookworm 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

Opération préupdate

Un petit nettoyage pour supprimer les noyaux Linux obsolètes

copy
apt autoremove

On installe la dépendance pour les nouvelles clés des dépôts

copy
apt install gpg

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 trixie (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 full-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.

Remplacement des dépôts de mise à jour

Nous allons maintenant remplacer tous les bookworm par trixie et mettre à jour la liste des paquets.

copy
wget -qO- http://stable.repository.esia-sa.com/esia/trixie/gnupg.key | gpg --dearmor > /etc/apt/keyrings/esia.gpg
chmod 755 /etc/apt/keyrings/esia.gpg
sed -i 's|bookworm|trixie|g' /etc/apt/sources.list
copy
 sed -i 's|deb\shttp://stable.repository.esia-sa.com|deb [signed-by=/etc/apt/keyrings/esia.gpg] http://stable.repository.esia-sa.com|g' /etc/apt/sources.list 
copy
 apt update 
Exemple
root@debian-bookworm:/# sed -i 's|bookworm|trixie|g' /etc/apt/sources.list
root@debian-bookworm:/# sed -i 's|deb\shttp://stable.repository.esia-sa.com|deb [signed-by=/etc/apt/keyrings/esia.gpg] http://stable.repository.esia-sa.com|g' /etc/apt/sources.list
root@debian-bookworm:/# apt update
Get:1 http://stable.repository.esia-sa.com trixie InRelease [2,271 B]
Get:2 http://stable.repository.esia-sa.com trixie/contrib amd64 Packages [7,200 B]
Get:3 http://stable.repository.esia-sa.com trixie/non-free amd64 Packages [1,963 B]
Ign http://stable.repository.esia-sa.com trixie/contrib Translation-en_US
Ign http://stable.repository.esia-sa.com trixie/contrib Translation-en
Ign http://stable.repository.esia-sa.com trixie/non-free Translation-en_US
Ign http://stable.repository.esia-sa.com trixie/non-free Translation-en
Ign http://ftp.be.debian.org trixie InRelease
Get:4 http://ftp.be.debian.org trixie Release.gpg [2,410 B]
Get:5 http://ftp.be.debian.org trixie Release [118 kB]
Get:6 http://ftp.be.debian.org trixie/main amd64 Packages [7,080 kB]
Get:7 http://ftp.be.debian.org trixie/main Translation-en [5,377 kB]
Fetched 12.6 MB in 2s (4,354 kB/s)
Reading package lists... Done
root@debian-bookworm:/#

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

  1. Faites un screenshot de l'état de vos nœuds 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

Exemple :

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

OS & ESIA

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

copy
apt -d full-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 full-upgrade

Dans l'exemple ci-dessous, il faudra 475 MB + 1 195 MB pendant l'installation.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  g++-12 libabsl20220623 libaio1 libassuan0 libavif15 libboost-filesystem1.81.0 libboost-program-options1.81.0
  libboost-regex1.81.0 libcbor0.8 libclass-load-perl libclass-load-xs-perl libclass-tiny-perl libdav1d6
  libdevel-overloadinfo-perl libdevel-partialdump-perl libfile-find-rule-perl libfuse2 libjsoncpp25 liblua5.3-0
  libmodule-runtime-conflicts-perl libmoose-perl libnl-3-200 libnl-genl-3-200 libnsl-dev libnumber-compare-perl
  libpackage-deprecationmanager-perl libperl5.36 libpython3.11 libpython3.11-dev libpython3.11-minimal
  libpython3.11-stdlib librav1e0 libstdc++-12-dev libsvtav1enc1 libtext-glob-perl libtirpc-dev libx265-199 lua-lpeg
  perl-modules-5.36 pkexec python3-six python3.11 python3.11-dev python3.11-minimal usrmerge
Use 'apt autoremove' to remove them.
The following packages will be REMOVED:
  libapache2-mod-php8.2 libapr1 libaprutil1 libcrypto++8 libcurl3-gnutls libcurl4 libdb5.3 libdbi1 libefiboot1
  libefivar1 libelf1 libext2fs2 libfcgi0ldbl libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libhogweed6 libmagic1
  libnetsnmptrapd40 libnettle8 libnpth0 libpcap0.8 libpng16-16 libpsl5 libreadline8 librrd8 libsnmp40 libssh2-1
  libssl3 libtirpc3 libuv1 libxmlrpc-epi0 php8.2 php8.2-cli php8.2-common php8.2-curl php8.2-gd php8.2-mbstring
  php8.2-opcache php8.2-pgsql php8.2-readline php8.2-rrd php8.2-snmp php8.2-soap php8.2-ssh2 php8.2-sybase
  php8.2-xml php8.2-xmlrpc policykit-1 polkitd-pkla python3-distutils python3-lib2to3
The following NEW packages will be installed:
  bsd-mailx cpp-14 cpp-14-x86-64-linux-gnu cpp-x86-64-linux-gnu dracut-install exim4-base exim4-config
  exim4-daemon-light firmware-ath9k-htc firmware-carl9170 fonts-dejavu-mono g++-14 g++-14-x86-64-linux-gnu
  g++-x86-64-linux-gnu gcc-14 gcc-14-base gcc-14-x86-64-linux-gnu gcc-x86-64-linux-gnu initramfs-tools-bin
  libabsl20240722 libaio1t64 libapache2-mod-php8.4 libapr1t64 libaprutil1t64 libapt-pkg7.0 libassuan9 libavif16
  libboost-filesystem1.88.0 libboost-program-options1.88.0 libcbor0.10 libcrypto++8t64 libcurl3t64-gnutls
  libcurl4t64 libdav1d7 libdb5.3t64 libdbi1t64 libefiboot1t64 libefivar1t64 libelf1t64 libevent-2.1-7t64
  libext2fs2t64 libfcgi0t64 libfuse3-4 libgcc-14-dev libgdbm-compat4t64 libgdbm6t64 libglib2.0-0t64
  libgnutls-dane0t64 libgnutls30t64 libheif-plugin-aomenc libheif-plugin-dav1d libheif-plugin-libde265
  libheif-plugin-x265 libhogweed6t64 libhwasan0 libimagequant0 libio-compress-brotli-perl libjsoncpp26 liblastlog2-2
  libldap2 liblockfile-bin liblockfile1 liblsof0 liblua5.4-0 libmagic1t64 libnet-netmask-perl libnetsnmptrapd40t64
  libnettle8t64 libnghttp3-9 libngtcp2-16 libngtcp2-crypto-gnutls8 libnpth0t64 libpcap0.8t64 libperl5.40
  libpng16-16t64 libpsl5t64 libpython3.13 libpython3.13-dev libpython3.13-minimal libpython3.13-stdlib librav1e0.7
  libreadline8t64 librrd8t64 libsframe1 libsharpyuv0 libsnmp40t64 libssh2-1t64 libssl3t64 libstdc++-14-dev
  libsvtav1enc2 libtirpc3t64 libunbound8 libunistring5 liburcu8t64 liburiparser1 libuv1t64 libwtmpdb0 libx265-215
  libxmlrpc-epi0t64 linux-image-6.12.73+deb13-amd64 linux-sysctl-defaults login.defs openssl-provider-legacy
  perl-modules-5.40 php8.4 php8.4-cli php8.4-common php8.4-curl php8.4-gd php8.4-mbstring php8.4-opcache
  php8.4-pgsql php8.4-readline php8.4-rrd php8.4-snmp php8.4-soap php8.4-ssh2 php8.4-sybase php8.4-xml php8.4-xmlrpc
  postgresql-common-dev python3-autocommand python3-bcrypt python3-inflect python3-jaraco.context
  python3-jaraco.functools python3-jaraco.text python3-more-itertools python3-pyasyncore python3-typeguard
  python3-typing-extensions python3-zipp python3.13 python3.13-dev python3.13-minimal sqv systemd-cryptsetup
The following packages have been kept back:
  esia-enterprise-base
The following packages will be upgraded:
  adduser apache2 apache2-bin apache2-data apache2-utils apg apparmor apt apt-utils base-files base-passwd bash
  bind9-dnsutils bind9-host bind9-libs binutils binutils-common binutils-x86-64-linux-gnu bsdutils build-essential
  busybox bzip2 ca-certificates console-setup console-setup-linux coreutils cpio cpp cpp-12 cron cron-daemon-common
  dash dbus dbus-bin dbus-daemon dbus-session-bus-common dbus-system-bus-common dbus-user-session debconf
  debconf-i18n debian-archive-keyring debianutils diffutils dirmngr discover discover-data dmeventd dmidecode
  dmsetup dpkg dpkg-dev e2fsprogs eject esia-api-satellite esia-config esia-cron esia-daemon esia-database
  esia-db-plugins-basic esia-db-plugins-common esia-db-plugins-gesa esia-ecatp-server esia-importation-common
  esia-interface esia-keystore esia-plugins-basic esia-plugins-common esia-plugins-open esia-poller esia-pypsrp
  esia-rcm esia-trapd esia-watchdog esia-webp-backup esia-webp-bitdefender esia-webp-flows esia-webp-inventory
  esia-webp-ipam esia-webp-iplabel esia-webp-office365 esia-webp-plan esia-webp-report esia-webp-server
  esia-webp-svascan esia-webp-switch esia-webp-syslog esia-webp-unity esia-webp-ups esia-webp-virtualization
  esia-webp-website esia-webp-windows fail2ban fakeroot fdisk file findutils firmware-linux-free fontconfig
  fontconfig-config fonts-dejavu-core freeipmi-common freeipmi-tools freetds-common g++ g++-12 gawk gcc gcc-12
  gcc-12-base gettext-base gnupg gnupg-l10n gnupg-utils gnupg1 gnupg1-l10n gnupg2 gpg gpg-agent gpg-wks-client
  gpg-wks-server gpgconf gpgsm gpgv grep grub-common grub-pc grub-pc-bin grub2-common gzip hostname htop ifupdown
  influxdb influxdb-client init init-system-helpers initramfs-tools initramfs-tools-core installation-report
  iproute2 iptables iptables-persistent iputils-ping isc-dhcp-client isc-dhcp-common javascript-common kbd
  keyboard-configuration klibc-utils kmod laptop-detect less libacl1 libalgorithm-diff-xs-perl libaom3 libapparmor1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libargon2-1 libasan8 libatomic1 libattr1 libaudit-common libaudit1
  libauthen-pam-perl libauthen-sasl-perl libb-hooks-endofscope-perl libb-hooks-op-check-perl libbinutils libblas3
  libblkid1 libbpf1 libbrotli1 libbsd0 libbz2-1.0 libc-bin libc-dev-bin libc-devtools libc-l10n libc6 libc6-dev
  libcairo2 libcap-ng0 libcap2 libcap2-bin libcapture-tiny-perl libcc1-0 libcgi-fast-perl libcgi-pm-perl
  libclass-c3-xs-perl libclass-data-inheritable-perl libclass-load-xs-perl libclass-method-modifiers-perl
  libclass-xsaccessor-perl libclone-perl libcom-err2 libcommon-sense-perl libconfig-inifiles-perl libcrypt-des-perl
  libcrypt-dev libcrypt-rijndael-perl libcrypt1 libcryptsetup12 libctf-nobfd0 libctf0 libdata-optlist-perl
  libdatetime-locale-perl libdatetime-perl libdatetime-timezone-perl libdatrie1 libdbd-pg-perl libdbd-pgsql
  libdbi-perl libdbus-1-3 libde265-0 libdebconfclient0 libdeflate0 libdevel-callchecker-perl libdevel-caller-perl
  libdevel-lexalias-perl libdevel-stacktrace-perl libdevmapper-event1.02.1 libdevmapper1.02.1 libdigest-hmac-perl
  libdiscover2 libdpkg-perl libduktape207 libdynaloader-functions-perl libedit2 libemail-abstract-perl
  libemail-address-xs-perl libemail-mime-perl libemail-sender-perl libencode-perl libestr0 libexpat1 libexpat1-dev
  libexporter-tiny-perl libfakeroot libfastjson4 libfcgi-bin libfcgi-perl libfdisk1 libffi8 libfido2-1
  libfile-fcntllock-perl libfile-find-rule-perl libfile-listing-perl libfontconfig1 libfreeipmi17 libfreetype6
  libfribidi0 libfstrm0 libgav1-1 libgcc-12-dev libgcc-s1 libgcrypt20 libgd3 libglib2.0-data libgmp10 libgomp1
  libgpg-error0 libgpm2 libgprofng0 libgraphite2-3 libgssapi-krb5-2 libharfbuzz0b libheif1 libhtml-form-perl
  libhtml-parser-perl libhtml-tagset-perl libhttp-cookies-perl libhttp-date-perl libhttp-message-perl libidn12
  libidn2-0 libio-pty-perl libio-socket-ssl-perl libio-stringy-perl libip4tc2 libip6tc2 libipc-run-perl
  libipmiconsole2 libipmidetect0 libisl23 libitm1 libjansson4 libjbig0 libjemalloc2 libjpeg62-turbo
  libjs-jquery-tablesorter libjs-sphinxdoc libjson-c5 libjson-xs-perl libk5crypto3 libkeyutils1 libklibc libkmod2
  libkrb5-3 libkrb5support0 libksba8 libldap-common liblerc4 liblinear4 liblist-moreutils-xs-perl liblmdb0
  liblocale-gettext-perl liblog-dispatch-perl liblognorm5 liblsan0 liblua5.3-0 liblvm2cmd2.03
  liblwp-protocol-https-perl liblz4-1 liblzma5 liblzo2-2 libmagic-mgc libmailtools-perl libmariadb3
  libmath-round-perl libmaxminddb0 libmd0 libmime-lite-perl libmime-tools-perl libmime-types-perl libmnl0
  libmodule-pluggable-perl libmodule-runtime-perl libmoose-perl libmount1 libmpc3 libmpfr6
  libnamespace-autoclean-perl libncurses6 libncursesw6 libnet-http-perl libnet-ip-perl libnet-libidn-perl
  libnet-openssh-perl libnet-smtp-tls-perl libnet-snmp-perl libnet-ssleay-perl libnetfilter-conntrack3 libnewt0.52
  libnfnetlink0 libnftables1 libnftnl11 libnghttp2-14 libnl-3-200 libnl-genl-3-200 libnsl-dev libnsl2 libnuma1
  libnumber-format-perl libonig5 libp11-kit0 libpackage-stash-xs-perl libpadwalker-perl libpam-modules
  libpam-modules-bin libpam-runtime libpam-systemd libpam0g libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libparams-classify-perl libparams-util-perl libparams-validate-perl libpci3 libpcre2-8-0 libpcsclite1
  libpixman-1-0 libpolkit-agent-1-0 libpolkit-gobject-1-0 libpopt0 libpq5 libproc2-0 libprotobuf-c1 libpython3-dev
  libpython3-stdlib libquadmath0 libref-util-xs-perl librrds-perl librtmp1 libsasl2-2 libsasl2-modules
  libsasl2-modules-db libseccomp2 libselinux1 libsemanage-common libsemanage2 libsensors-config libsensors5
  libsepol2 libsigsegv2 libslang2 libsmartcols1 libsnmp-base libsocket6-perl libsodium23 libspecio-perl libsqlite3-0
  libss2 libstdc++-12-dev libstdc++6 libstring-crc32-perl libsub-exporter-perl libsub-identify-perl libsub-name-perl
  libsybdb5 libsystemd-shared libsystemd0 libtasn1-6 libtest-deep-perl libtext-charwidth-perl libtext-csv-perl
  libtext-csv-xs-perl libtext-iconv-perl libthai-data libthai0 libthrowable-perl libtiff6 libtinfo6 libtirpc-common
  libtirpc-dev libtry-tiny-perl libtsan2 libubsan1 libudev1 liburi-perl liburing2 libusb-1.0-0 libuuid1
  libvariable-magic-perl libwebp7 libwrap0 libwww-mechanize-perl libwww-perl libx11-6 libx11-data libxau6
  libxcb-render0 libxcb-shm0 libxcb1 libxdmcp6 libxext6 libxml-libxml-perl libxml-parser-perl libxml-sax-perl
  libxml2 libxmuu1 libxpm4 libxrender1 libxslt1.1 libxstring-perl libxtables12 libxxhash0 libyuv0 libz3-4 libzstd1
  linux-base linux-image-amd64 linux-libc-dev locales login logrotate logsave lsof lua-lpeg lvm2 mailcap make
  manpages manpages-dev mariadb-common mawk media-types mount mysql-common nano ncurses-base ncurses-bin
  ncurses-term net-tools netbase netfilter-persistent nftables nmap nmap-common ntpsec openssh-client openssh-server
  openssh-sftp-server openssl os-prober passwd patch pci.ids pciutils perl perl-base perl-openssl-defaults
  php-common php-curl php-pgsql php-rrd php-sybase pinentry-curses pkexec polkitd postgresql-client-common
  postgresql-common procps psmisc publicsuffix python3 python3-bareos python3-certifi python3-cffi
  python3-cffi-backend python3-chardet python3-charset-normalizer python3-configargparse python3-cryptography
  python3-dev python3-idna python3-minimal python3-ntp python3-pkg-resources python3-ply python3-pycparser
  python3-pyinotify python3-requests python3-setuptools python3-six python3-systemd python3-urllib3 qemu-guest-agent
  readline-common rrdcached rrdtool rsyslog runit-helper sed sensible-utils sgml-base shared-mime-info smarty4 snmp
  snmpd snmptrapd ssl-cert sudo sysstat systemd systemd-sysv sysvinit-utils tar task-ssh-server tasksel tasksel-data
  tcpdump tzdata ucf udev usbutils usrmerge util-linux util-linux-extra vim vim-common vim-runtime vim-tiny wget
  whiptail whois xauth xdg-user-dirs xkb-data xml-core xxd xz-utils zlib1g zlib1g-dev zstd
586 upgraded, 137 newly installed, 53 to remove and 1 not upgraded.
Need to get 460 MB of archives.
After this operation, 523 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Appuyez sur q pour continuer

apt-listchanges: News
---------------------

openssh (1:10.0p1-1) unstable; urgency=medium

  OpenSSH 10.0p1 includes a number of changes that may affect existing
  configurations:

   * This release removes support for the weak DSA signature algorithm,
     completing the deprecation process that began in 2015 (when DSA was
     disabled by default) and repeatedly warned over the last 12 months.

   * scp(1), sftp(1): pass "ControlMaster no" to ssh when invoked by scp &
     sftp. This disables implicit session creation by these tools when
     ControlMaster was set to yes/auto by configuration, which some users
     found surprising. This change will not prevent scp/sftp from using an
     existing multiplexing session if one had already been created.

   * sshd(8): this release disables finite field (a.k.a modp) Diffie-Hellman
     key exchange in sshd by default. Specifically, this removes the
     "diffie-hellman-group*" and "diffie-hellman-group-exchange-*" methods
     from the default KEXAlgorithms list. The client is unchanged and
     continues to support these methods by default.

   * sshd(8): this release removes the implicit fallback to compiled-in
     groups for Diffie-Hellman Group Exchange KEX when the moduli file
     exists but does not contain moduli within the client-requested range.
     The fallback behaviour remains for the case where the moduli file does
     not exist at all. This allows administrators more explicit control over
     :
  • Pour toutes les questions posées, laissez la réponse par défaut
  • Pour la question concernant 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.
Question PostgreSQL

Si, lors de la mise à jour des paquets, PostgreSQL veut upgrader son cluster, répondez non. On le fera après. Il est possible qu'il pose cette question plusieurs fois durant le processus. Répondez non à chaque fois.

Upgrade Postgres

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

Configuration file '/etc/apache2/sites-available/default-ssl.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** default-ssl.conf (Y/I/N/O/D/Z) [default=N] ? 

La mise à jour est terminée

Mise à jour terminée

Base de données: Postgresql

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

Upgrade PosgreSQL cluster automatiquement
copy
apt upgrade postgresql

Si la commande ne fait rien et la prompte suivante ne s'affiche pas, passez à Upgrade PosgreSQL cluster manuellement.

Répondez oui à la question suivante : Upgrade Postgres

Le cluster se mettra à jour automatiquement, et, une fois le processus terminé, vous pourrez voir les clusters accessibles via la commande pg_lscluster. Il faut que le cluster en version 17 soit indiqué comme “online”.

copy
pg_lsclusters

Résultat final :

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

Si la commande a fonctionné, il n'est pas nécessaire de faire la section Upgrade PosgreSQL cluster manuellement, vous pouvez passer à la suite (Faire fonctionner l'interface web d'Esia.). L’ancienne base de données pourra être supprimée après vérification du bon fonctionnement lors de l’étape de nettoyage.

Upgrade PosgreSQL cluster manuellement

Uniquement, si la prompt ne s'est pas lancé à l'étape précédente avec la commande “apt upgrade postgresql”.

copy
pg_lsclusters
  • Si le cluster 15 est down et le 17 online :

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

    C'est que le cluster a bien été upgradé précédemment. Il ne faut pas continuer l'upgrade manuel.

  • Si on a les deux clusters online

    root@debian-bookworm:/# pg_lsclusters
    Ver Cluster Port Status Owner    Data directory              Log file
    15 main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
    17 main    5433 online postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log
    root@debian-bookworm:/#

    Il faut d'abord supprimer le cluster 17 qui a été créé automatiquement par postgres. Notre DB est dans le 15.

    Attention Pour le pg_dropcluster bien mettre 17 et pas 15 !

    copy
    pg_dropcluster 17 main --stop
    pg_lsclusters

Si on n'a pas de cluster 17 dès le début ou après sa suppression :

root@debian-bookworm:/# pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
15 main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
root@debian-bookworm:/#

Il faut maintenant upgrader notre cluster 15 en 17 :

copy
pg_upgradecluster 15 main
pg_lsclusters

Résultat final :

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

La base de données actuelle pourra être supprimée après la vérification que tout fonctionne correctement lors de l’étape de nettoyage.

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/*

Faire fonctionner l'interface web d'Esia

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

copy
a2dismod php8.2
a2enmod php8.4
service apache2 restart
apt remove php8.2
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 de fin de mise à jour

Vérification des paquets

Vérifier la version d'esia-enterprise-base

Il est possible que le paquet “esia-enterprise-base” ne se soit pas mis à jour à cause d'un problème de dépendance des paquets. On va vérifier et, si nécessaire, corriger le problème.

Vérifier la version du paquet :

copy
dpkg -l | grep esia-enterprise-base

Résultat :

root@debian-bookworm:/# dpkg -l | grep esia-enterprise-base
ii  esia-enterprise-base                             3.5.2+1r0                            all          The Esia enterprise

Si la version du paquet ne commence pas par 3.5.2 mais par 3.5.1, il faut installer les dépendances manuellement.

Installer chrony :

copy
apt install chrony -y

Lors de l'installation de chrony il a normalement résolu le problème et upgradé “esia-enterprise-base” dans la foulée. Revérifier la version du paquet :

copy
dpkg -l | grep esia-enterprise-base

Si jamais ce n'est toujours pas 3.5.2, tenter un apt upgrade :

copy
apt full-upgrade

S'il ne se met toujours pas à jour, contacter le support Esia.

Vérifiez le pare-feu Debian

Il est possible que la commande “apt autoremove” ait supprimé le paquet “iptables-persistent”. Cette fonction permet de restaurer la configuration du pare-feu au lancement du serveur. Vérifier que le paquet est bien installé :

copy
dpkg -l | grep iptables-persistent

Mauvais résultat (paquet en rc) :

root@debian-bookworm:/# dpkg -l | grep iptables-persistent
rc  iptables-persistent                              1.0.23                               all          boot-time loader for netfilter rules, iptables plugin

Bon résultat (paquet en ii) :

root@debian-bookworm:/# dpkg -l | grep iptables-persistent
ii  iptables-persistent                              1.0.23                               all          boot-time loader for netfilter rules, iptables plugin

Si la commande ne retourne rien (le paquet n'existe pas) ou si elle retourne rc ou n'importe quel autre statut que ii (installé et configuré), il faut réinstaller le paquet :

copy
apt install iptables-persistent -y

Supprimez les anciens paquets Debian bookworm

Cette étape est nécessaire, en plus de gagner en espace disque, garder 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é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 serait survenait plus tard de manière aléatoire.

copy
apt autoremove

Confirmer ensuite la suppression.

Vérifiez si votre VM redémarre

Redémarrez votre VM et vérifiez 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
reboot

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 nœuds et des services

Comparez l'état actuel de vos nœuds 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 :

  • 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 :

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.

Nettoyage

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

  • Suppression du snapshot
  • Suppression du backup
    copy
    rm -R /root/BACKUP_ESIA/

  • Suppression de l'ancienne base de données (ATTENTION à bien mettre 15)

    copy
    pg_dropcluster 15 main

Dépannage

Toutes les unitys sont déconnectées

La configuration du pare-feux interne d'Esia a peut-être supprimé 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.v4

Si les iptables sont vides, il est possible que les règles ne se soient pas rechargées au redémarrage. Dans ce cas, il faut réinstaller iptables-persistant qui aurait dû être vérifié à l'étape [[#verifier_que_le_firewall_du_serveur_chargera_bien_sa_configuration|Vérifier que le firewall du serveur chargera bien sa configuration. Ensuite, il faut recharger la configuration pour la session en cours :

copy
iptables-restore < /etc/iptables/rules.v4

La page Web est inaccessible

Configurer php7 dans Apache

Avez-vous exécuté les commandes suivantes ?

copy
a2dismod php8.2
a2enmod php8.4
service apache2 restart

Vérifiez le statut 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
advanced/update_esia_deb12_13.txt · Dernière modification : de n.biersart

Outils de la page