racqspace.unattended_upgrades
Ansible Rolle: unattended_upgrades
Installieren und einrichten von unattended-upgrades für Ubuntu und Debian (seit Wheezy), um regelmäßig Sicherheitsupdates zu installieren.
Anforderungen
Die Rolle verwendet das apt-Modul, welches zusätzliche Abhängigkeiten hat.
Falls Sie unattended_upgrades_mail
auf eine E-Mail-Adresse setzen, stellen Sie sicher, dass der Befehl mailx
verfügbar ist und Ihr System E-Mails senden kann.
Die Rolle benötigt die Version 0.70 oder neuer von unattended-upgrades, welche seit Debian Wheezy und Ubuntu 12.04 verfügbar ist. Dies ist wegen der Nutzung von Origins Patterns.
Automatischer Neustart
Wenn Sie die automatische Neustart-Funktion (unattended_upgrades_automatic_reboot
) aktivieren, wird die Rolle versuchen, das Paket update-notifier-common
zu installieren, welches auf einigen Systemen benötigt wird, um einen Neustart nach dem Upgrade zu erkennen und auszuführen. Sie können optional eine spezifische Zeit für den Neustart festlegen (unattended_upgrades_automatic_reboot_time
).
Diese Funktion war in Debian Jessie nicht funktionsfähig, wurde aber schließlich in das unattended-upgrades-Paket integriert.
Deaktivierte Cron-Jobs
Auf einigen Hosts kann es vorkommen, dass die Cron-Datei /etc/cron.daily/apt
für unattended-upgrades in apt.disabled
umbenannt wurde. Dies könnte eine Entscheidung des Anbieters sein, um CPU-Ressourcen zu sparen. Verwenden Sie die Rolle enable-standard-cronjobs, um unattended-upgrades wieder zu aktivieren.
Variablen der Rolle
Hauptvariablen
unattended_upgrades_cache_valid_time
: Aktualisiert den apt-Cache, wenn er älter ist als die angegebene Zeit in Sekunden; wird während der Paketinstallation an das apt-Modul übergeben.- Standard:
3600
- Standard:
Auto-Upgrades
unattended_upgrades_enabled
: Aktiviert das Update-/Upgrade-Skript (0=deaktivieren)- Standard:
1
- Standard:
unattended_upgrades_upgrade
: Führt das "unattended-upgrade" Sicherheitsupgrade-Skript alle n-Tage aus (0=deaktivieren)- Standard:
1
- Standard:
unattended_upgrades_update_package_list
: Führen Sie "apt-get update" automatisch alle n-Tage aus (0=deaktivieren)- Standard:
1
- Standard:
unattended_upgrades_download_upgradeable
: Führt "apt-get upgrade --download-only" alle n-Tage aus (0=deaktivieren)- Standard:
0
- Standard:
unattended_upgrades_autoclean_interval
: Führt "apt-get autoclean" alle n-Tage aus (0=deaktivieren)- Standard:
7
- Standard:
unattended_upgrades_clean_interval
: Führt "apt-get clean" alle n-Tage aus (0=deaktivieren)- Standard:
0
- Standard:
unattended_upgrades_random_sleep
: Definiert das Maximum für ein zufälliges Intervall in Sekunden, nach dem der apt-Job startet (nur für Systeme ohne systemd)- Standard:
1800
(30 Minuten)
- Standard:
unattended_upgrades_dl_limit
: Begrenzen Sie die Downloadgeschwindigkeit in kB/sec mit der apt-Bandbreitenbegrenzungsfunktion.- Standard: deaktiviert
unattended-upgrades
unattended_upgrades_origins_patterns
: Array von Herkunftsmustern, um zu bestimmen, ob das Paket automatisch installiert werden kann; für weitere Details siehe Origins Patterns unten.- Standard für Debian:
['origin=Debian,codename=${distro_codename},label=Debian-Security']
- Standard für Ubuntu:
['origin=Ubuntu,archive=${distro_codename}-security,label=Ubuntu']
- Standard für Debian:
unattended_upgrades_package_blacklist
: Pakete, die nicht automatisch aktualisiert werden- Standard:
[]
- Standard:
unattended_upgrades_autofix_interrupted_dpkg
: ob bei einem unsauberen dpkg-Ausstiegdpkg --force-confold --configure -a
ausgeführt werden soll- Standard:
true
- Standard:
unattended_upgrades_minimal_steps
: Teilt das Upgrade in die kleinsten möglichen Teile, damit sie mit SIGUSR1 unterbrochen werden können.- Standard:
true
- Standard:
unattended_upgrades_install_on_shutdown
: Installiert alle unattended-upgrades, wenn die Maschine heruntergefahren wird.- Standard:
false
- Standard:
unattended_upgrades_mail
: E-Mail-Adresse, um Informationen über Upgrades oder Probleme mit unattended upgrades zu senden- Standard:
false
(keine E-Mail senden)
- Standard:
unattended_upgrades_mail_only_on_error
: E-Mail nur bei Fehlern senden, ansonsten wird bei jedem Paket-Upgrade eine E-Mail gesendet.- Standard:
false
- Standard:
unattended_upgrades_remove_unused_dependencies
: automatische Entfernung aller nicht verwendeten Abhängigkeiten nach dem Upgrade.- Standard:
false
- Standard:
unattended_upgrades_remove_new_unused_dependencies
: automatische Entfernung neuer nicht verwendeter Abhängigkeiten nach dem Upgrade.- Standard:
true
- Standard:
unattended_upgrades_automatic_reboot
: System automatisch neu starten, wenn ein aktualisiertes Paket dies erfordert, unmittelbar nach dem Upgrade.- Standard:
false
- Standard:
unattended_upgrades_automatic_reboot_time
: System automatisch neu starten, wenn ein aktualisiertes Paket dies erfordert, zu einem bestimmten Zeitpunkt (HH:MM) anstelle sofort nach dem Upgrade.- Standard:
false
- Standard:
unattended_upgrades_update_days
: Legen Sie die Wochentage fest, an denen Updates angewendet werden sollen. Die Tage können als lokalisierte Abkürzungen oder vollständige Namen oder als ganze Zahlen angegeben werden, wobei "0" Sonntag, "1" Montag usw. ist. Beispiel:{"Mon";"Fri"};
- Standard: deaktiviert
unattended_upgrades_ignore_apps_require_restart
: unattended-upgrades wird einige kritische Pakete, die nach einem Upgrade einen Neustart erfordern, nicht automatisch aktualisieren (d.h. es gibt die DirektiveXB-Upgrade-Requires: app-restart
in ihrer debian/control-Datei). Ist diese Option auftrue
gesetzt, werden diese Pakete unabhängig von der Direktive aktualisiert.- Standard:
false
- Standard:
unattended_upgrades_syslog_enable
: Ereignisse in syslog schreiben, was in Umgebungen nützlich ist, in denen syslog-Nachrichten an einen zentralen Speicher gesendet werden.- Standard:
false
- Standard:
unattended_upgrades_syslog_facility
: Ereignisse in die angegebene syslog-Einrichtung schreiben oder die Standard-Daemon-Einrichtung, wenn nicht angegeben. Hat nur Wirkung, wennunattended_upgrades_syslog_enable
auftrue
gesetzt ist.- Standard:
daemon
- Standard:
unattended_upgrades_verbose
: Definiert die Detailgenauigkeit von APT für regelmäßige Ausführungen. Die Ausgabe wird an root gesendet.- Mögliche Optionen:
0
: kein Bericht1
: Fortschrittsbericht2
: + Befehlsausgaben3
: + Nachverfolgung aktiviert
- Standard:
0
(kein Bericht)
- Mögliche Optionen:
unattended_upgrades_dpkg_options
: Array von dpkg-Befehlszeilenoptionen, die während der Ausführung von unattended-upgrades verwendet werden, z.B.["--force-confdef"]
,["--force-confold"]
- Standard:
[]
- Standard:
Origins Patterns
Origins Patterns sind eine leistungsstärkere Alternative zur Option "Allowed Origins", die in früheren Versionen von unattended-upgrade verwendet wurde.
Ein Muster setzt sich aus bestimmten Schlüsselwörtern zusammen:
a
,archive
,suite
– z.B.stable
,trusty-security
(archive=stable
)c
,component
– z.B.main
,crontrib
,non-free
(component=main
)l
,label
– z.B.Debian
,Debian-Security
,Ubuntu
o
,origin
– z.B.Debian
,Unofficial Multimedia Packages
,Ubuntu
n
,codename
– z.B.jessie
,jessie-updates
,trusty
(dies wird nur unterstützt mitunattended-upgrades
>= 0.80)site
– z.B.http.debian.net
Sie können die verfügbaren Repositories mit apt-cache policy
überprüfen und Ihre Auswahl mit dem Befehl unattended-upgrades -d
auf einem Zielsystem debuggen.
Zusätzlich unterstützt unattended-upgrades zwei Makros (Variablen), die aus /etc/debian_version
abgeleitet sind:
${distro_id}
– Name der installierten Distribution, z.B.Debian
oderUbuntu
.${distro_codename}
– Installierter Codename, z.B.jessie
odertrusty
.
Es wird empfohlen, ${distro_codename}
anstelle von stable
oder oldstable
auszuwählen, da dies beim Wechsel von stable
zu oldstable
dazu führen kann, dass keine Sicherheitsupdates installiert werden, oder schlimmer, dass versehentlich Pakete aus einer neueren Distribution installiert werden. Das Gleiche gilt für das Upgrade Ihrer Installation von oldstable
auf stable
, wenn Sie vergessen, dies in Ihren Herkunftsmustern zu ändern, werden Sie möglicherweise keine Sicherheitsupdates für Ihre neuere Distribution erhalten. Mit ${distro_codename}
können beide Fälle nicht auftreten.
Beispiele zur Verwendung der Rolle
Beispiel für Ubuntu mit benutzerdefinierten Herkunftsmustern, auf die schwarze Liste gesetzten Paketen und E-Mail-Benachrichtigung:
- hosts: all
roles:
- role: racqspace.unattended_upgrades
vars:
unattended_upgrades_origins_patterns:
- 'origin=Ubuntu,archive=${distro_codename}-security'
- 'o=Ubuntu,a=${distro_codename}-updates'
unattended_upgrades_package_blacklist: [cowsay, vim]
unattended_upgrades_mail: 'root@example.com'
Hinweis: Sie müssen unattended_upgrades_origins_patterns
nicht angeben, die Rolle verwendet die Standardwerte der Distribution, wenn die Variable nicht gesetzt ist.
Nur auf Debian-basierten Systemen ausführen
Wenn Sie mehrere Distributionen mit demselben Playbook verwalten, möchten Sie möglicherweise das Ausführen dieser Rolle auf nicht-Debian-Systeme überspringen. Sie können die Bedingung when
mit der Rolle verwenden, um die Rolle auf bestimmte Systeme zu beschränken:
- hosts: all
roles:
- role: racqspace.unattended_upgrades
when: ansible_facts['os_family'] == 'Debian'
Beispiele für Muster
Standardmäßig sind nur Sicherheitsupdates für sowohl Ubuntu als auch Debian erlaubt. Sie können weitere Muster hinzufügen, um unattended-updates die automatische Installation von mehr Paketen zu ermöglichen. Seien Sie sich jedoch bewusst, dass automatisierte große Updates Ihr System möglicherweise beeinträchtigen können.
Für Debian
unattended_upgrades_origins_patterns:
- 'origin=Debian,codename=${distro_codename},label=Debian-Security' # Sicherheitsupdates
- 'o=Debian,codename=${distro_codename},label=Debian' # Updates einschließlich Nicht-Sicherheitsupdates
- 'o=Debian,codename=${distro_codename},a=proposed-updates'
In Debian Wheezy, da unattended-upgrades
0.79.5
ist, können Sie die codename
-Direktive nicht verwenden.
Sie müssen stattdessen auf Archiv-basiertes Matching zurückgreifen:
unattended_upgrades_origins_patterns:
- 'origin=Debian,a=stable,label=Debian-Security' # Sicherheitsupdates
- 'o=Debian,a=stable,l=Debian' # Updates einschließlich Nicht-Sicherheitsupdates
- 'o=Debian,a=proposed-updates'
Bitte stellen Sie sicher, dass Sie die Probleme in der Dokumentation zu Herkunftsmustern darüber lesen.
Für Ubuntu
In Ubuntu enthält das Archiv immer den Verteilungscode.
unattended_upgrades_origins_patterns:
- 'origin=Ubuntu,archive=${distro_codename}-security'
- 'o=Ubuntu,a=${distro_codename}'
- 'o=Ubuntu,a=${distro_codename}-updates'
- 'o=Ubuntu,a=${distro_codename}-proposed-updates'
Für Raspbian
In Raspbian ist es nur möglich, alle Pakete aus dem Standardrepository zu aktualisieren, einschließlich Nicht-Sicherheitsupdates, oder keine Updates durchzuführen.
Alle aktualisieren, einschließlich Nicht-Sicherheitsupdates:
unattended_upgrades_origins_patterns:
- 'origin=Raspbian,codename=${distro_codename},label=Raspbian'
Sie können nicht die codename
-Direktive in Raspbian Wheezy verwenden, wie zuvor bei Debian Wheezy beschrieben.
Um auf einem Raspbian-Host keine Updates zu installieren, setzen Sie einfach unattended_upgrades_origins_patterns
auf eine leere Liste:
unattended_upgrades_origins_patterns: []
Lizenz
MIT
Autorinformation
Diese Rolle wurde 2021 von Clemens Kaserer erstellt.
Beiträge von:
Configure unattended-upgrades for Debian based systems.
ansible-galaxy install racqspace.unattended_upgrades