Catégories
Devops

Linux auto update/upgrade

unattended-upgrades (Debian Ubuntu) est un outil qui permet de mettre à jour nos systèmes à base de Linux Debian (Ubuntu, Raspbian), pour effectuer automatiquement à intervalles réguliers l’équivalent d’un apt update && apt upgrade.
Il est souvent installé de pair avec apt-listchanges (sur Ubuntu par ex) qui permet de nous transmettre un mail lors de chaque MAJ de nos systèmes.

Installation et configuration

Installation

unattended-upgrades est installé par défaut dans les distrib Ubuntu mais pas dans les Raspbian:

sudo apt install unattended-upgrades

Configuration

unattended-upgrades dispose de 2 fichiers de configuration sont:

sudo vi /etc/apt/apt.conf.d/50unattended-upgrades # configuration APT

sudo vi /etc/apt/apt.conf.d/20auto-upgrades # paramétrage de unattended-upgrades
# Ajouter APT::Periodic::RandomSleep "600"

Il est possible de générer le fichier 20auto-upgrades en utilisant la commande suivante :

sudo dpkg-reconfigure --priority=low unattended-upgrades

Run

Vérifier ce qui sera installé avec cette configuration avec (-d –dry-run) puis sans ces arguments si tout est OK:

sudo unattended-upgrade -v -d --dry-run

Les logs d’exécutions se trouvent dans:

/var/log/unattended-upgrades/unattended-upgrades-dpkg.log
/var/log/unattended-upgrades/unattended-upgrades.log # si lancé en mode Debug avec -d
/var/log/dpkg.log # log par défaut d'APT

Exemples de configuration

lister sa configuration

Il faut utiliser la commande apt-config pour être sure de lister la config effective:

sudo apt-config dump|grep Periodic

fichier 50unattended-upgrades

voici un exemple de fichier /etc/apt/apt.conf.d/50unattended-upgrades pour un Raspberry Pi (noter l’option o=Raspbian) et pour lequel on souhaite éviter les mises à jour automatiques de Nginx (Package-Blacklist):

Unattended-Upgrade::Origins-Pattern {
      "o=Raspbian,a=stable";
      "o=Raspbian,a=stable-updates";
      "o=Raspbian,a=proposed-updates";
      "o=Raspbian,n=${distro_codename}";
      "o=Raspbian,n=${distro_codename}-updates";
      "o=Raspbian,n=${distro_codename}-proposed-updates";
      "o=Raspbian,n=${distro_codename},l=Debian-Security";
};

Unattended-Upgrade::Package-Blacklist {
	"nginx";
};

Unattended-Upgrade::Automatic-Reboot "true"

fichier 20auto-upgrades

voici un exemple de configuration d’unattended-upgrades fichier /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::AutocleanInterval "7";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::RandomSleep "600";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Update-Package-Lists "1";