AutoUpdate
Alpine Linux
Crontab
# crontab -e
On ajoute la ligne suivante pour que chaque jour à 4h30 la mise à jour s'effectue avec les logs dans le fichier /var/log/apkcrontupdate.log
... 30 4 * * * /bin/date > /var/log/apkcrontupdate.log && /sbin/apk -Uv upgrade >> /var/log/apkcrontupdate.log
APK-Autoupdate
Installation
Si absent il faut ajouter le dépôt "testing" aux sources :
# echo 'https://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
On installe le paquêt :
# apk update && apk upgrade # apk add apk-autoupdate
Configuration
# vi /etc/apk/autoupdate.conf
Outre les listes blanche et noire habituelles il est possible de spécifier une commande autre que "restart" (si plusieurs séparées par un espace blanc).
- Par exemple pour recharger Nginx plutôt que le redémarrer :
... # Note: Case patterns (shell "case") may be used in program path. programs_services="/usr/sbin/nginx:nginx:reload" ...
Test
# apk-autoupdate -sv
Crontab
# crontab -e
On ajoute la ligne suivante pour que chaque jour à 4h30 la mise à jour s'effectue avec les logs dans le fichier /var/log/apk-autoupdate.log
30 4 * * * /bin/date > /var/log/apk-autoupdate.log && /usr/sbin/apk-autoupdate >> /var/log/apk-autoupdate.log
Debian / Ubuntu
On utilise l'outil fournit "unattended-upgrades"
Installation
# apt update && apt upgrade # apt install unattended-upgrades # systemctl enable unattended-upgrades # systemctl start unattended-upgrades
Configuration
Sélection des MAJ
# vi /etc/apt/apt.conf.d/50unattended-upgrades
On active les mises à jour souhaitées en supprimant le "//" devant la ligne idoine, ici nous gardons la configuration par défaut qui ne met automatiquement à jour que les MAJ de sécurité :
...
// pocket these get automatically pulled in.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
...
Activer l'envoie de rapports par mail
# vi /etc/apt/apt.conf.d/50unattended-upgrades
... Unattended-Upgrade::Mail "root"; ...
Nettoyer automatiquement les dépendences inutiles
# vi /etc/apt/apt.conf.d/50unattended-upgrades
... // Remove unused automatically installed kernel-related packages // (kernel images, kernel headers and kernel version locked tools). Unattended-Upgrade::Remove-Unused-Kernel-Packages "true"; // Do automatic removal of newly unused dependencies after the upgrade Unattended-Upgrade::Remove-New-Unused-Dependencies "true"; // Do automatic removal of unused packages after the upgrade // (equivalent to apt-get autoremove) Unattended-Upgrade::Remove-Unused-Dependencies "true"; ...
Ensuite on configure la fréquence des mises à jour :
# dpkg-reconfigure -plow unattended-upgrades
-> <Yes>
# vi /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::Verbose "2"; APT::Periodic::AutocleanInterval "7";
Les lignes ajoutées permettent d'avoir des rapports plus complets et de nettoyer les paquets tous les 7 jours.
On relance le service
# systemctl restart unattended-upgrades
Test
# unattended-upgrades --dry-run --debug