1. Introduction, ou pourquoi il est temps d'arrêter de faire semblant
Laissez-moi deviner : vous êtes du genre à vous vanter d'être un administrateur système compétent, mais vous ne vous souvenez pas de la dernière fois que vous avez tapé apt update && apt upgrade
sur vos serveurs en production ? Pas étonnant que vos systèmes ressemblent à un gruyère numérique avec plus de trous que de fromage. Un bon sysadmin met à jour ses systèmes - un vrai sysadmin automatise ça et passe à autre chose.
Heureusement, les créateurs de Debian n'ont pas supposé que vous étiez tous des héros de la ligne de commande avec une mémoire infaillible et un agenda aussi vide que /dev/null
. Ils nous ont gratifiés d'unattended-upgrades, ce petit bijou d'automatisation que seuls les vrais barbus savent configurer correctement. Bien sûr, vous pourriez continuer à mettre à jour manuellement, de la même manière que vous pourriez continuer à croire que vi est plus difficile qu'Emacs.
2. Unattended-upgrades : le sysadmin silencieux qui ne prend jamais de pause café
Contrairement à votre stagiaire qui croit que "mise à jour de sécurité" signifie "changer son mot de passe de 'password123' à 'password1234'", unattended-upgrades est un service qui prend son travail au sérieux. Cette petite merveille d'ingénierie fonctionne pendant que vous dormez profondément, rêvant probablement de clusters Kubernetes parfaitement orchestrés (on sait tous que ça n'arrive que dans les rêves).
Techniquement parlant (et les vrais barbus aiment parler techniquement), c'est un démon qui s'exécute via systemd timers pour :
- Chercher les mises à jour que vous auriez dû installer il y a des semaines
- Filtrer celles qui empêcheront votre système de se faire pwner par un script kiddie
- Les installer sans vous demander votre avis (parce qu'on sait tous que vous diriez "plus tard")
- Redémarrer votre serveur au milieu de la nuit quand personne ne regardera vos graphs de monitoring chuter momentanément
Ce paquet fonctionne sur n'importe quelle version de Debian (de l'antique Buster à la fraichement sortie Bookworm) et même sur ces ersatz de Debian comme Ubuntu, si vous vous abaissez à utiliser de telles distributions.
3. Installation pour ceux qui savent encore taper sur un clavier
3.1 Les bases (même votre stagiaire pourrait le faire)
Ouvrez votre terminal noir (parce que bien sûr, vous utilisez un fond noir avec des polices vertes, comme tout vrai barbu qui se respecte) et tapez ces incantations magiques :
sudo apt update
sudo apt install unattended-upgrades apt-listchanges
Ce que vous venez de conjurer :
unattended-upgrades
: le véritable héros silencieux qui fera le travail que vous procrastinez habituellementapt-listchanges
: pour recevoir des emails détaillés que vous prétendrez lire avant de les archiver automatiquement
3.2 Activation pour les admins qui ont peur de modifier les fichiers de configuration à la main
Si vous préférez l'approche "clique-bouton" (aucun jugement, enfin peut-être un peu), Debian vous offre un assistant :
sudo dpkg-reconfigure --priority=low unattended-upgrades
💡 Astuce de vrai barbu : L'argument
--priority=low
force l'affichage de toutes les options possibles, parce que les vrais barbus veulent tout contrôler. Les autres priorités sont pour ceux qui pensent qu'utiliser une souris sous Linux est une bonne idée.
Un menu pseudo-graphique va apparaître dans votre terminal. Sélectionnez "Oui" (comme si vous aviez réellement le choix). Cette étape crée le fichier /etc/apt/apt.conf.d/20auto-upgrades
avec une configuration basique pour les âmes simples.
4. Configuration pour les vrais barbus (ceux qui n'utilisent pas de GUI)
La configuration d'unattended-upgrades se fait dans deux fichiers de configuration. Si vous ne savez pas ce qu'est un fichier de configuration, fermez cet article et retournez installer Windows :
/etc/apt/apt.conf.d/50unattended-upgrades
- Où la vraie magie se passe/etc/apt/apt.conf.d/20auto-upgrades
- Pour dire à votre système à quelle fréquence il doit se sauver lui-même
4.1 Sélection des dépôts (ou comment distinguer les mises à jour importantes des futilités)
Éditez /etc/apt/apt.conf.d/50unattended-upgrades
(avec vi, bien sûr, pas avec cette abomination qu'est nano). La section Origins-Pattern
est comme le filtre de Tinder de votre système - elle décide quelles mises à jour méritent son attention :
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename}-security";
// "origin=Debian,codename=${distro_codename}-updates";
// "origin=Debian,codename=${distro_codename}-proposed-updates";
// "origin=Debian,codename=${distro_codename}-backports";
};
Guide de traduction du jargon Debian pour mortels :
Type de dépôt | Ce que Debian dit | Ce que ça signifie vraiment | À activer si... |
---|---|---|---|
-security | "Correctifs de sécurité critiques" | "Colmate les trous que les script kiddies utilisent déjà" | Vous avez un minimum d'instinct de survie |
-updates | "Corrections importantes non sécuritaires" | "Bugs suffisamment gênants pour qu'on daigne les corriger" | Vous en avez assez que vos services plantent mystérieusement |
-proposed-updates | "Candidats en attente de validation" | "Quelqu'un a bricolé ça, ça semble marcher, mais on n'est pas sûr" | Vous aimez vivre dangereusement (ou avez un environnement de test) |
-backports | "Nouvelles versions portées vers stable" | "Du code récent greffé sur un OS dinosaure" | Un fonctionnalité VRAIMENT nécessaire vous manque |
🐑 Conseil de troupeau : La plupart des moutons n'activent que
-security
. Les vrais barbus activent tout puis blâment systemd quand ça casse.
4.2 Planification des mises à jour (ou quand laisser votre système jouer au docteur)
Modifiez /etc/apt/apt.conf.d/20auto-upgrades
pour définir quand votre système se soignera tout seul :
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Unattended-Upgrade-Time "3";
APT::Periodic::RandomSleep "60";
Explication pour ceux qui n'ont jamais lu le man :
-
Update-Package-Lists : À quelle fréquence votre système recherche de nouvelles mises à jour.
"1"
= tous les jours (pour les paranoïaques)"7"
= une fois par semaine (pour les décontractés)"0"
= jamais (pour ceux qui aiment jouer à la roulette russe avec les exploits)
-
Unattended-Upgrade : Quand appliquer réellement ces mises à jour.
"1"
= quotidiennement (recommandé par tous ceux qui ont déjà dû nettoyer un serveur compromis)"7"
= hebdomadaire (un compromis pour les téméraires)"0"
= jamais (alors pourquoi lire cet article ?)
-
Unattended-Upgrade-Time : L'heure à laquelle lancer le processus.
"3"
= 3h du matin, quand même les administrateurs système devraient dormir
-
RandomSleep : Le délai aléatoire pour éviter d'être comme tout le monde.
"60"
= entre 0 et 60 minutes de décalage (pour ne pas faire tomber les miroirs Debian quand tout le monde se rue dessus à 3h00 pile)
🐔 Pour les insomniaques : Sur Debian 11+,
RandomSleep
est en minutes. Sur Debian 10 et avant, c'est en secondes. Pourquoi ? Parce que la cohérence, c'est surfait quand on peut introduire des bugs subtils dans votre configuration.
4.3 Gestion du reboot automatique (ou comment faire pleurer vos utilisateurs)
Les mises à jour du noyau sont comme les légumes - elles ne font effet que si vous redémarrez. Configurez le comportement dans /etc/apt/apt.conf.d/50unattended-upgrades
:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:30";
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";
Ce que ces options signifient vraiment :
-
Automatic-Reboot : Le grand interrupteur de la terreur nocturne.
"true"
= "J'aime vivre dangereusement et mes backups sont à jour""false"
= "Je préfère avoir un noyau vulnérable mais au moins je sais quand mon serveur redémarre"
-
Automatic-Reboot-Time : L'heure du crime parfait.
- Format :
"HH:MM"
(choisir une heure où personne ne remarquera que tout est tombé) - Conseil de barbu : planifiez-le toujours APRÈS les mises à jour, pas pendant
- Format :
-
Automatic-Reboot-WithUsers : Le dilemme éthique.
"true"
= "Les sessions des utilisateurs importent moins que la sécurité" (approche soviétique)"false"
= "Les humains d'abord" (approche diplomatique)
🔥 Histoire vraie : J'ai vu un administrateur configurer un redémarrage automatique à 14h sur un serveur de production. Il a ensuite passé trois semaines à se demander pourquoi les utilisateurs lui envoyaient des messages haineux tous les jours.
4.4 Notifications pour prétendre que vous surveillez vos serveurs
Les emails de notification sont là pour vous donner l'illusion que vous savez ce qui se passe sur vos serveurs. Configurez-les dans /etc/apt/apt.conf.d/50unattended-upgrades
:
Unattended-Upgrade::Mail "admin@domaine.fr";
Unattended-Upgrade::MailReport "on-change";
//Unattended-Upgrade::Mail-Server "smtp.example.com";
//Unattended-Upgrade::Mail-Server-Port "587";
//Unattended-Upgrade::Mail-Server-Login "votre_login";
//Unattended-Upgrade::Mail-Server-Password "votre_motdepasse";
Options pour votre spam personnel :
-
Mail : Qui recevra les rapports que personne ne lit.
- Mettez votre email perso si vous aimez être réveillé à 3h du matin par des notifications
- Ou créez un filtre qui les envoie directement dans un dossier que vous n'ouvrirez jamais
-
MailReport : La fréquence de spam.
"always"
= pour ceux qui aiment leur boîte mail bien remplie"on-change"
= le choix des gens raisonnables"only-on-error"
= pour ceux qui adhèrent à la philosophie "pas de nouvelles, bonnes nouvelles"
📣 Rappel essentiel : Ces mails ne serviront à rien si vous n'avez pas un MTA fonctionnel. Installez-en un ou tous ces paramètres ne seront que des vœux pieux :
sudo apt install postfix # OU sudo apt install msmtp msmtp-mta
5. Dompter les mises à jour majeures (ou l'art d'éviter la crise cardiaque à 3h du matin)
Les mises à jour de sécurité, c'est bien, mais les mises à jour majeures, c'est comme laisser un enfant de 5 ans conduire votre voiture - ça peut aller très mal, très vite. Particulièrement avec ces paquets qui utilisent le système d'alternatives de Debian, cette brillante invention qui garantit votre future migraine.
5.1 Le piège des alternatives (ou comment se tirer une balle dans le pied automatiquement)
Les langages comme PHP, Python ou Java utilisent ce merveilleux système d'alternatives, qui permet à plusieurs versions de coexister (comme vos ex, mais en plus utile). Malheureusement, ce système a été conçu par quelqu'un qui n'a manifestement jamais entendu parler de l'automatisation.
Le drame en 4 actes :
Acte | Tragédie | Résultat |
---|---|---|
1 | Votre système découvre PHP 8.3 et pense "oh, quelle belle mise à jour !" | Installation lancée à 3h17 du matin |
2 | Le script demande poliment : "Voulez-vous faire de cette nouvelle version la version par défaut ?" | Votre serveur fige, attendant une réponse qui ne viendra jamais |
3 | Vous dormez paisiblement pendant que votre installation reste suspendue | Configuration en état zombie (sudo dpkg --configure -a sera votre mantra du matin) |
4 | Votre système de mise à jour automatique est lui-même bloqué | Félicitations, vous venez de désactiver votre sécurité automatique |
5.2 Solutions pour barbus confirmés (et amateurs de nuits tranquilles)
5.2.1 Entraîner debconf à ne pas vous demander votre avis
Ce code est l'équivalent de mettre un bâillon sur debconf pour qu'il arrête de poser des questions stupides :
sudo echo "php8.3 php8.3/common/default_for_install boolean false" | sudo debconf-set-selections
sudo echo "php8.2 php8.2/common/default_for_install boolean true" | sudo debconf-set-selections
Quand l'utiliser : Lorsque vous êtes un admin responsable qui teste d'abord les nouvelles versions avant de les infliger à votre production. Concept alien pour certains, je sais.
5.2.2 Expliquer à Debian ce qu'est une priorité (comme à votre chef de projet)
Le système de priorité d'alternatives est l'équivalent technique d'une hiérarchie féodale - celui avec le plus grand nombre gagne :
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82 \
--slave /usr/bin/phar phar /usr/bin/phar8.2 \
--slave /usr/bin/phpdbg phpdbg /usr/bin/phpdbg8.2
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.3 80 \
--slave /usr/bin/phar phar /usr/bin/phar8.3 \
--slave /usr/bin/phpdbg phpdbg /usr/bin/phpdbg8.3
💡 Astuce de vrai barbu : La valeur numérique est juste une préférence, pas une garantie. Utilisez des nombres significativement différents si vous ne voulez pas être surpris. J'ai déjà vu des administrateurs utiliser 10 et 11, puis se plaindre que leur choix n'était pas respecté - niveau amateur.
5.2.3 Le coup du hook post-installation (ou comment avoir le dernier mot)
Quand vous en avez assez que Debian ignore vos préférences, créez un hook qui aura le dernier mot après chaque mise à jour :
sudo vi /etc/apt/apt.conf.d/99post-upgrade-hook
Ajoutez ce code vindicatif dans le fichier :
DPkg::Post-Invoke {
"if [ -f /usr/bin/php8.2 ] && [ -f /usr/bin/php8.3 ]; then update-alternatives --set php /usr/bin/php8.2; fi";
};
Pourquoi c'est brillant : Cette approche passive-agressive rétablit votre version préférée après CHAQUE opération APT, même si un paquet tente sournoisement de changer la version par défaut. C'est l'équivalent de dire "Merci pour ton opinion, maintenant on va faire à ma façon quand même".
5.2.4 Mettre un gilet pare-balles contre les versions majeures
Ajoutez à /etc/apt/apt.conf.d/50unattended-upgrades
ce code défensif :
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::Allow-downgrade "false";
Unattended-Upgrade::Allow-APT-Mark-Fallback "false";
Décryptage des incantations de protection :
Option | Ce qu'elle fait vraiment | Traduction en langage barbu |
---|---|---|
MinimalSteps | Change en mode "un paquet à la fois" | "Je préfère que mon système plante sur UN paquet plutôt que sur TOUS" |
Allow-downgrade | Empêche les retours en arrière | "Non, on ne revient pas à PHP 5 juste parce que tu as peur du changement" |
Allow-APT-Mark-Fallback | Désactive l'auto-sélection de nouvelles versions | "Touche pas à mes versions majeures, animal ! " |
5.2.5 La liste noire de la honte (ou comment bannir les paquets problématiques)
Placez vos paquets critiques sur la liste des indésirables avec cette configuration :
Unattended-Upgrade::Blacklist {
"php*";
"mariadb-server";
"postgresql*";
"nginx";
"apache2";
};
5.3 Le plan de bataille pour les vrais professionnels
📌 Stratégie de survie en environnement de production :
- Bloquez les versions majeures avec la configuration 5.2.4, à moins que vous n'aimiez les appels nocturnes
- Blacklistez impitoyablement tout ce qui fait tourner votre business avec l'option 5.2.5
- Construisez un environnement de test identique - les vrais barbus testent AVANT, pas en production
- Planifiez vos mises à jour majeures comme des opérations militaires, avec des plans de repli
- Faites des backups complets avant toute mise à jour majeure, ou préparez votre CV
⚠️ Alerte rouge : Les mises à jour majeures automatiques sur des composants critiques, c'est comme jouer à la roulette russe avec le serveur de production - vous pourriez vous en sortir, mais est-ce vraiment un risque que vous voulez prendre ? Pour tout ce qui fait tourner votre business (PHP, bases de données, serveurs web), planifiez, testez, puis priez avant de mettre à jour.
6. Entrer dans la matrice : surveillance et déblocage des catastrophes nocturnes
6.1 Les logs que personne ne lit jamais (jusqu'à ce que tout explose)
Même avec l'automatisation, il faut surveiller ce que fait cette bête sauvage qu'est unattended-upgrades. Sinon, c'est comme laisser votre adolescent seul à la maison pendant le week-end - tôt ou tard, vous le regretterez. Voici les fichiers que vous prétendrez consulter régulièrement :
Fichier log | Ce qu'il contient réellement | Quand le lire (soyons honnêtes) |
---|---|---|
/var/log/unattended-upgrades/unattended-upgrades.log |
Le journal de bord du capitaine automatique | Quand votre patron demande "que s'est-il passé ?" |
/var/log/unattended-upgrades/unattended-upgrades-dpkg.log |
Ce que dpkg marmonne dans sa barbe | Quand le premier log ne vous dit pas pourquoi tout a explosé |
/var/log/apt/history.log |
La preuve que quelqu'un a fait quelque chose | Pour savoir QUI blâmer (spoiler : c'est toujours systemd) |
/var/log/apt/term.log |
Les mêmes informations qu'avant, mais en plus verbeux | Pour les masochistes qui aiment lire 5000 lignes de texte |
/var/log/dpkg.log |
Chaque respiration de dpkg | Pour les vrais barbus qui lisent les logs comme d'autres lisent Game of Thrones |
Les logs sont automagiquement comprimés et rotatés (.1
, .2.gz
, etc.). Voici comment faire semblant de les surveiller régulièrement :
sudo tail -n 20 /var/log/unattended-upgrades/unattended-upgrades.log
sudo grep -i "error\|fail\|warning" /var/log/unattended-upgrades/unattended-upgrades.log
6.2 Déclencher manuellement les mises à jour (pour le plaisir de voir quelque chose se casser en temps réel)
Pour voir unattended-upgrades en action, comme si vous regardiez un documentaire animalier sur un prédateur dans son habitat naturel :
sudo unattended-upgrade --dry-run --debug
sudo unattended-upgrade --debug
sudo unattended-upgrade -d
🧪 Preuve d'expertise technique : Utilisez
--dry-run
lors des démos pour vos collègues. Si ça fonctionne, prenez un air suffisant. Si ça plante, dites nonchalamment : "C'est exactement pourquoi j'utilise dry-run, voyez-vous".
6.3 Techniques de réanimation pour système bloqué (ou comment sauver votre journée)
Quand votre système de mise à jour automatique s'arrête en position fœtale, voici la trousse d'urgence du barbu :
sudo dpkg --audit
sudo dpkg --configure --pending
sudo apt-get -f install
sudo apt-mark showhold
Si votre système est bloqué par une question existentielle comme "Voulez-vous que PHP 8.3 devienne le nouveau PHP par défaut ?", il est temps d'intervenir manuellement (comme arracher la manette des mains d'un enfant) :
sudo dpkg --configure -a
sudo dpkg-reconfigure php8.3-common