Unattended-upgrades

De Justine's wiki
Aller à la navigation Aller à la recherche

Source pour cette page

Présentation de unattended-upgrades

Sur toutes les distros utilisant apt, le but de ce paquet est d'installer automatiquement les mises à jour. On garde le serveur à jour avec les dernières updates de sécurité (et plus, selon la configuration). Le tout est fait automatiquement et peut être accompagné d'un mail à l'administrateur.

Il convient d'avoir un moyen de surveiller les changements. J'utilise ma supervision, mais le wiki Debian conseille d'utiliser apt-listchanges pour envoyer des mails.

Installation

Pas grand-chose à installer:

<source> apt-get install unattended-upgrades apt-listchanges </source>

Configuration

L'installation par défaut effectue les updates normales ainsi que les updates de sécurité. La configuration se trouve dans /etc/apt/apt.conf.d/50unattended-upgrades.

Voici les lignes de configuration que j'ai retenues pour mon usage personnel:

<source> //Contrôle quels paquets seront mis à jour Unattended-Upgrade::Origins-Pattern {

       // Codename based matching:
       // This will follow the migration of a release through different
       // archives (e.g. from testing to stable and later oldstable).
       // Software will be the latest available for the named release,
       // but the Debian release itself will not be automatically upgraded.
       "origin=Debian,codename=${distro_codename},label=Debian";
       "origin=Debian,codename=${distro_codename},label=Debian-Security";
       "origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
       // Archive or Suite based matching:
       // Note that this will silently match a different release after
       // migration to the specified archive (e.g. testing becomes the
       // new stable).

}; //Contrôle quels paquets seront blacklistés Unattended-Upgrade::Package-Blacklist {

   // The following matches all packages starting with linux-
   // Use $ to explicitely define the end of a package name. Without
   // the $, "libc6" would match all of them.
   // Special characters need escaping
   // The following matches packages like xen-system-amd64, xen-utils-4.1,
   // xenstore-utils and libxenstore3.0
   // For more information about Python regular expressions, see
   // https://docs.python.org/3/howto/regex.html

}; //Supprimer les kernel inutiles Unattended-Upgrade::Remove-Unused-Kernel-Packages "true"; //Activer le reboot automatique (si personne n'est connecté) Unattended-Upgrade::Automatic-Reboot "true"; //Heure du reboot automatique (si nécessaire) Unattended-Upgrade::Automatic-Reboot-Time "04:00"; </source>

Activation

Pour activer unattended-upgrades, il faut créer le fichier /etc/apt/apt.conf.d/20auto-upgrades et y mettre le contenu:

<source> APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; </source>

Test

On peut tester la conf avec:

<source> unattended-upgrades --debug --dry-run </source>

Logs

Les logs se trouvent dans /var/log/unattended-upgrades.

  • unattended-upgrades.log retrace toutes les actions
  • unattended-upgrades-dpkg.log affiche les sorties de apt


Modification des heures de lancement

Les heures de lancement sont gérées par des timers Systemd. Les fichiers utilisés par défaut sont:

  • Pour les downloads : /lib/systemd/system/apt-daily.timer qui peut ếtre supplanté par /etc/systemd/system/apt-daily.timer.d/override.conf
  • Pour les upgrades : /lib/systemd/system/apt-daily-upgrade.timer qui peut être supplanté par /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf

Pour changer les heures, typiquement, on utilisera : <source>

  1. Pour les downloads
  2. sudo systemctl edit apt-daily.timer
  3. sudo systemctl restart apt-daily.timer
  4. sudo systemctl status apt-daily.timer (optional, you can check the next trigger time with this)
  1. Ou, pour les upgrades
  2. sudo systemctl edit apt-daily-upgrade.timer
  3. sudo systemctl restart apt-daily-upgrade.timer
  4. sudo systemctl status apt-daily-upgrade.timer (optional, you can check the next trigger time with this)

</source>