automatische Updates mit unattended-upgrades

Veröffentlicht: Mai 31, 2015 in Debian
Schlagwörter:,

debian-logoEine der wichtigsten Aufgaben für einen Admin besteht darin, Sicherheitsaktualisierungen zeitnah einzuspielen. Unter debianbasierten Distributionen lässt sich dies mittels unattended-upgrades automatisieren. Sofern ein Mailserver und das Programm mailx installiert ist, können entsprechende Reports nach jeder Installation oder nur im Fehlerfall versand werden.

Installation & Konfiguration
apt-get install unattended-upgrades

Nach der Installation läßt sich das Verhalten im File /etc/apt/apt.conf.d/50unattended-upgrades konfigurieren. Die Datei enthält eine umfangreiche Kommentierung, weshalb sie hier nur Auszugsweise dargestellt wird.

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).
// "o=Debian,n=jessie";
// "o=Debian,n=jessie-updates";
// "o=Debian,n=jessie-proposed-updates";
// "o=Debian,n=jessie,l=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).
// "o=Debian,a=stable";
// "o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
 "origin=Debian,codename=${distro_codename},label=Debian-Security";
};

Per Default sind zu Beginn nur Sicherheitsupdates eingeschaltet (Zeile 17),  weitere automatische Updates lassen sich durch auskommentieren freischalten. Für Serversysteme im Produktiveinsatz empfiehlt sich die Verwendung des „Codename based matching“ (Zeile 5-8),  so läuft man nicht Gefahr von einem Releasewechsel überrascht zu werden und die Möglichkeit vor einem Wechsel entsprechende Anpassungen und Tests durchzuführen.

// List of packages to not update (regexp are supported)
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};

Unattended-Upgrades enthält ebenfalls eine Funktion zum Blacklisting einzelner Pakete, das bedeutet das hier aufgezählte Pakete nicht upgedated werden. Sollte das Blacklisting zu unlösbaren Abhängigkeitsprolemen führen, wird dies dem Administrator, sofern konfiguriert, via Mail mitgeteilt.


// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
//Unattended-Upgrade::Mail "root";

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";

Mit den Zeilen 5 & 9 lässt sich die Zusendung von Installtionsreports einstellen. Hat man nicht extra einen Mailserver konfiguriert erfolgt die Mailzustellung lokal, an den eingetragenen User. Um für jedes Update eine Mail zu erhalten, ist es erforderlich den Parameter „MailOnlyOnError“ auf false zu setzen.

Bevor unattended-upgrades einsatzbereit ist muss man noch das File /etc/apt/apt.conf.d/02periodic anlegen. Hier lassen sich die Häufigkeit der Updates, sowie die automatische Bereinigung konfigurieren.

// Enable the update/upgrade script (0=disable)
APT::Periodic::Enable "1";

// Set maximum size of the cache in MB (0=disable)
APT::Periodic::MaxSize "512";

// Do "apt-get update" automatically every n-days (0=disable)
APT::Periodic::Update-Package-Lists "1";

// Do "apt-get upgrade --download-only" every n-days (0=disable)
APT::Periodic::Download-Upgradeable-Packages "1";

// Run the "unattended-upgrade" security upgrade script
// every n-days (0=disabled)
// Requires the package "unattended-upgrades" and will write
// a log in /var/log/unattended-upgrades
APT::Periodic::Unattended-Upgrade "1";

// Do "apt-get autoclean" every n-days (0=disable)
APT::Periodic::AutocleanInterval "7";

//     Send report mail to root
//     0:  no report             (or null string)
//     1:  progress report       (actually any string)
//     2:  + command outputs     (remove -qq, remove 2>/dev/null, add -d)
//     3:  + trace on
APT::Periodic::Verbose "0";

Prinzipiell ist unattended-upgrades nun einsatzbereit und ein manuelles Eingreifen ist nur noch nötig wenn ein Paket eine neuere Konfigurationsdatei enthält. Möchte man auch diesen Punkt automatisieren legt man die Datei /etc/apt/apt.conf.d/local an.

Um die vorhandene Konfigurationsdatei zu behalten verwendet man den folgenden Code:

Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}

Die neuere Version des Paketbetreuers befindet sich dann unter dem selben Pfad wie die Konfigurationsdatei, mit der zusätzlichen Endung .dpkg-dist.

Soll die jeweilige Konfigurationsdatei dagegen automatisch standardmäßig mit der neuen Version des Paketbetreuers ersetzt werden, sollte Folgendes eingetragen werden:

Dpkg::Options {
   "--force-confnew";
}

Die ursprüngliche Version befindet sich dann unter dem selben Pfad wie die Konfigurationsdatei, mit der zusätzlichen Endung .dpkg-old.

Testlauf & Logfile

Ein Testlauf, ohne Installation, lässt dich folgermassen durchführen:

unattended-upgrades --dry-run

Das Ergebnis lässt sich unter /var/log/unattendend-upgrades/unattendend-upgrades.log nachvollziehen.

Für jeden Update-Vorgang wir eine eigenes Logfile, mit Zeitstempel, angelegt:

  • /var/log/unattended-upgrades/unattended-upgrades-dpkg_ZEITSTEMPEL.log
  • Die hier aufgeführten Informationen entsprechen denen die man beim manuellen Update über apt-get erhält.

 

Advertisements
Kommentare
  1. […] Jetzt ist auch die Hardware so weit angepasst wie gewünscht und jetzt geht es an die Automatisierung von Updates und Upgrades (https://scriptingcorner.net/2015/05/31/automatische-updates-mit-unattended-upgrades/). […]

    Gefällt mir

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s