racqspace.unattended_upgrades

Ansible Rolle: unattended_upgrades

MIT GitHub Workflow Status GitHub letzter Commit GitHub Veröffentlichungsdatum Wartung

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

Auto-Upgrades

  • unattended_upgrades_enabled: Aktiviert das Update-/Upgrade-Skript (0=deaktivieren)
    • Standard: 1
  • unattended_upgrades_upgrade: Führt das "unattended-upgrade" Sicherheitsupgrade-Skript alle n-Tage aus (0=deaktivieren)
    • Standard: 1
  • unattended_upgrades_update_package_list: Führen Sie "apt-get update" automatisch alle n-Tage aus (0=deaktivieren)
    • Standard: 1
  • unattended_upgrades_download_upgradeable: Führt "apt-get upgrade --download-only" alle n-Tage aus (0=deaktivieren)
    • Standard: 0
  • unattended_upgrades_autoclean_interval: Führt "apt-get autoclean" alle n-Tage aus (0=deaktivieren)
    • Standard: 7
  • unattended_upgrades_clean_interval: Führt "apt-get clean" alle n-Tage aus (0=deaktivieren)
    • Standard: 0
  • 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)
  • 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']
  • unattended_upgrades_package_blacklist: Pakete, die nicht automatisch aktualisiert werden
    • Standard: []
  • unattended_upgrades_autofix_interrupted_dpkg: ob bei einem unsauberen dpkg-Ausstieg dpkg --force-confold --configure -a ausgeführt werden soll
    • Standard: true
  • unattended_upgrades_minimal_steps: Teilt das Upgrade in die kleinsten möglichen Teile, damit sie mit SIGUSR1 unterbrochen werden können.
    • Standard: true
  • unattended_upgrades_install_on_shutdown: Installiert alle unattended-upgrades, wenn die Maschine heruntergefahren wird.
    • Standard: false
  • unattended_upgrades_mail: E-Mail-Adresse, um Informationen über Upgrades oder Probleme mit unattended upgrades zu senden
    • Standard: false (keine E-Mail senden)
  • unattended_upgrades_mail_only_on_error: E-Mail nur bei Fehlern senden, ansonsten wird bei jedem Paket-Upgrade eine E-Mail gesendet.
    • Standard: false
  • unattended_upgrades_remove_unused_dependencies: automatische Entfernung aller nicht verwendeten Abhängigkeiten nach dem Upgrade.
    • Standard: false
  • unattended_upgrades_remove_new_unused_dependencies: automatische Entfernung neuer nicht verwendeter Abhängigkeiten nach dem Upgrade.
    • Standard: true
  • unattended_upgrades_automatic_reboot: System automatisch neu starten, wenn ein aktualisiertes Paket dies erfordert, unmittelbar nach dem Upgrade.
    • Standard: false
  • 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
  • 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 Direktive XB-Upgrade-Requires: app-restart in ihrer debian/control-Datei). Ist diese Option auf true gesetzt, werden diese Pakete unabhängig von der Direktive aktualisiert.
    • Standard: false
  • 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
  • unattended_upgrades_syslog_facility: Ereignisse in die angegebene syslog-Einrichtung schreiben oder die Standard-Daemon-Einrichtung, wenn nicht angegeben. Hat nur Wirkung, wenn unattended_upgrades_syslog_enable auf true gesetzt ist.
    • Standard: daemon
  • 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 Bericht
      • 1: Fortschrittsbericht
      • 2: + Befehlsausgaben
      • 3: + Nachverfolgung aktiviert
    • Standard: 0 (kein Bericht)
  • 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: []

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 mit unattended-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 oder Ubuntu.
  • ${distro_codename} – Installierter Codename, z.B. jessie oder trusty.

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:

Über das Projekt

Configure unattended-upgrades for Debian based systems.

Installieren
ansible-galaxy install racqspace.unattended_upgrades
GitHub Repository
Lizenz
mit
Downloads
1.4k
Besitzer