Updates automatisieren mit cron-apt unter Ubuntu Server 14.04

Wer einen oder mehrere Linux-Server über einen größeren Zeitraum betreibt, weiß, dass man regelmäßige Updates gerne mal vergisst und vernachlässigt. Bei den gängigen Distributionen, welche für den Serverbetrieb ausgelegt sind, ist standardmäßig auch kein Tool installiert, welches dem Admin diese Aufgabe abnimmt.

Da ich im Linux-Bereich hauptsächlich auf Ubuntu Server setze, beschreibt diese Anleitung die Umsetzung der Update-Automatisierung mit cron-apt unter Ubuntu Server 14.04.

Als erstes muss natürlich das Paket cron-apt installiert werden.

sudo apt-get install cron-apt

Nach der Installation liegt die config-Datei im Verzeichnis /etc/cron-apt. Mit einem Texteditor deiner Wahl muss die Konfiguration in dieser Datei angepasst werden. Ich bevorzuge nano als Editor.

sudo nano /etc/cron-apt/config

diese Zeilen müssen für die Verwendung von apt-get, als Paketmanager hinzugefügt werden:

APTCOMMAND=/usr/bin/apt-get
MAILTO="mail@example.com"
MAILON=always

APTCOMMAND beschreibt den Paketmanager. Ich verwende hier apt-get. Möglich wäre auch eine Konfiguration mit aptitude oder apt-file.

Für MAILTO muss eine Emailadresse angegeben werden, an welche ein eventueller Updatebericht geschickt wird. (Beachte Hinweis unten!)

Die Variable MAILON kann auch den Wert error zugewiesen bekommen. Dann wird nur eine Mail verschickt, wenn es bei einem Update zu einem Fehler gekommen ist. Mit dem Wert upgrade bekommt man nur eine Mail, wenn tatsächlich Updates durchgeführt wurden. Ich habe mich mal im ersten Schritt für always entschieden. Hier bekommt man, wie hoffentlich bereits vermutet, immer eine Benachrichtigung, wenn der Job ausgeführt wird.

Standardmäßig ist cron-apt so konfiguriert, dass die Updates nur heruntergeladen, aber nicht installiert werden. Dieser Parameter kann wie folgt angepasst werden:

Mit diesem Befehl wird die Konfigurationsdatei 3-download mit nano aufgerufen:

sudo nano /etc/cron-apt/action.d/3-download

Die Datei hat den folgenden Inhalt:

autoclean -y
dist-upgrade -d -y -o APT::Get::Show-Upgraded=true

In der Konfigurationsdatei 3-download wird definiert, dass mit dem Parameter autoclean -y zwischengespeicherte Pakete automatisch gelöscht werden. (Analog dem Befehl apt-get autoclean).

Die Zeile darunter definiert mit -d, dass die neuen Pakete nur heruntergeladen werden, aber nicht installiert werden. In meiner Umgebung habe ich das -d entfernt, um die Updates auch direkt zu installieren.

Um abschließend zu definieren, wann das ganze ausgeführt werden sollen, muss noch der Cronjob entsprechend angepasst werden. Dazu bearbeiten wir die Datei cron-apt im Verzeichnis /etc/cron.d/

 sudo nano /etc/cron.d/cron-apt

Hier finden wir folgenden Inhalt vor:

#
# Regular cron jobs for the cron-apt package
#
# Every night at 4 o'clock.
0 4 * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt
# Every hour.
# 0 * * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cro$
# Every five minutes.
# */5 * * * * root test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt /etc/cro$

Standardmäßig ist hier hinterlegt, dass täglich, um 4 Uhr morgens nach Updates gesucht wird. Nachdem der betroffene Rechner 24/7 läuft soll mir das mal recht sein. Durch Setzen eines # an erster Position der Zeile wird diese auskommentiert. Verarbeitet werden nur Zeilen, welche nicht mit # beginnen. Hier sollte nur eine Zeile nicht auskommentiert sein.

Getestet werden kann die ganze Konfiguration über den Befehl

sudo cron-apt -s

Wenn alles richtig konfiguriert wurde, dann sollte jetzt eine entsprechende Meldung ausgegeben werden.

Achtung:
Voraussetzung für das Versenden von Mails über cron-apt ist ein funktionsfähiger Mailserver, welcher auf dem gleichen Rechner läuft. Wie der am einfachsten mit Postfix für diese Aufgabe Konfiguriert wird, erkläre ich in einem anderen Post.

Facebooktwittergoogle_plusmail

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *