Table des matières
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 :
- On modifie le fichier des sources de paquets pour indiquer qu'on passe en trixie (commande sed)
- On met à jour la base de données système contenant la liste des paquets (commande apt update)
- 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 :
Notez quelle heure il est.
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.
Exemples de questions posées
On répond avec “Yes” puis ENTER
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
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 :
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.
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.
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 :
- 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 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.
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:2080Il 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 :
Exemple de service Apache2 démarré :
Tenter de redémarrer le service Apache2
- copy
service apache2 start service apache2 status








