Ubuntu 16.04: Unbeaufsichtigte Upgrades werden zu zufälligen Zeiten ausgeführt

13

Ich habe unbeaufsichtigte Upgrades so konfiguriert, dass Sicherheitspakete installiert und per E-Mail benachrichtigt werden, wenn dies der Fall ist.

Ich habe festgestellt, dass die Installation zu sehr zufälligen Zeiten erfolgt. Ich weiß, dass die neuesten Versionen eine zufällige Verzögerung von bis zu 30 Minuten ab der Ausführungszeit von cron.daily hinzugefügt haben.

Die Verzögerungen, die ich erlebe, sind jedoch viel größer. Ich sehe unbeaufsichtigte Upgrades, die um 9 Uhr, 15 Uhr, 12 Uhr ausgeführt werden ... Die Protokolle zeigen dasselbe, sodass nicht nur die E-Mail-Zustellung länger dauert.

Die unbeaufsichtigte Upgrade-Aufgabe ist die erste in cron.daily, was bedeutet, dass es keine vorherige Aufgabe mit großen Ausführungszeiten gibt.

Hat jemand etwas Ähnliches erlebt?

daniel f.
quelle
Das zufällige Verhalten ist absichtlich - um die Nachfrage zu glätten, anstatt dass Millionen von Systemen jeden Tag zur gleichen Zeit ein paar Spiegel hämmern. Normale Desktop-Benutzer sollten das Verhalten überhaupt nicht bemerken. Einige Unternehmensbenutzer möchten das Verhalten auf etwas Vorhersehbareres ändern, und dies ist sicherlich willkommen.
user535733
Ja, der Grund für diese Wahl ist klar. Es ist nur so, dass dieses Verhalten für Produktionssysteme nicht akzeptabel ist. Zu der Zeit, als ich diese Frage stellte, war dieses Verhalten (und das Update) nirgendwo dokumentiert
Daniel F.

Antworten:

18

Nach dem Debuggen fand ich die Lösung.

Die Hauptursache für dieses Problem liegt in der Tatsache, dass unbeaufsichtigte Upgrades unter Ubuntu 16.04 und neuer systemd - nicht cron - verwenden, um die Updates mit einer großen zufälligen Verzögerung zu planen:

/lib/systemd/system/apt-daily.timer ist konfiguriert mit

OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h

Dies bedeutet, dass es zweimal täglich um 6:00 und 18:00 Uhr mit einer zufälligen Verzögerung von bis zu 12 Stunden ausgeführt wird. Da dies für Produktionsumgebungen nicht immer akzeptabel ist, musste ich diese Einstellungen überschreiben.

Um die Paketkonfigurationsdateien unberührt zu lassen, habe ich meine Überschreibung in definiert /etc/systemd/system/apt-daily.timer.d/override.conf( Update : Bitte lesen Sie die Bearbeitung am Ende dieser Antwort, um weitere Informationen zu Dateiname und Speicherort zu erhalten, da sich diese geringfügig ändern können).

Da habe ich gesetzt

[Timer]
OnCalendar=
OnCalendar=06:00
RandomizedDelaySec=1h

unbeaufsichtigte Upgrades werden um 6:00 Uhr plus einer zufälligen Verzögerung von bis zu einer Stunde ausgeführt.

Dann habe ich einfach den Timer mit neu gestartet systemctl restart apt-daily.timer(muss eventuell den Daemon neu laden).

Unbeaufsichtigte Updates werden jetzt wieder zu vorhersehbaren Zeiten ausgeführt!

Edit : Es scheint, als ob sich für Ubuntu 18.04 etwas geändert hat. Die Überschreibung sollte jetzt gespeichert sein /etc/systemd/system/apt-daily-upgrade.timer.d/override.confund folgendermaßen aussehen:

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=1h

@PerlDuck hat in einem Kommentar unten eine Möglichkeit zum Erstellen einer Überschreibungsdatei mit dem richtigen Namen und Speicherort erwähnt. Anstatt eine Datei manuell zu erstellen, sollten Sie sie ausführensudo systemctl edit apt-daily.timer

daniel f.
quelle
Warum löschen Sie zuerst OnCalendar?
Jarno
1
Denn sonst würde nur um 6 Uhr morgens ein neuer Timer hinzugefügt, wobei auch der vorhandene übrig bleibt. Da ich möchte, dass unbeaufsichtigte Upgrades NUR um 6 Uhr ausgeführt werden, muss ich zuerst den Zeitplan löschen.
daniel f.
Ich habe "OnBootSec = 5min" hinzugefügt, um die Ausführung auch nach dem Start zu aktivieren, aber es hat nicht funktioniert. (Außerdem wurde OnUnitActiveSec = 12h hinzugefügt, damit es nicht zu häufig ausgeführt wird.)
jarno
systemd, oder besser gesagt, die systemd-Denkweise, schlägt erneut zu. Möglicherweise muss ich das Upgrade auf Xenial Xerus in der Produktion überdenken, nachdem mich dieses Juwel gebissen hat.
Joe
1
@ Daniel f. Ich habe eine apt-daily.timer-Datei in / lib / systemd / system / sowie eine in /etc/systemd/system/timers.target.wants/. Ich habe jedoch keine in / etc / systemd / system / selbst wie du. Würdest du wissen, ob ich stattdessen das Verzeichnis apt-daily.timer.d und die Datei override.conf unter / lib / systemd / system erstellen soll? Alle Ratschläge dankbar mit thx.
Purvez
3

Ich habe Daniels Lösung ausprobiert, aber das Upgrade lief immer noch zu den falschen Zeiten. Es stellte sich heraus, dass zwei systemd-Overrides erforderlich sind:

Wird zum Herunterladen verwendet

/lib/systemd/system/apt-daily.timer - überschreiben mit /etc/systemd/system/apt-daily.timer.d/override.conf

Wird zum Aktualisieren verwendet

/lib/systemd/system/apt-daily-upgrade.timer - überschreiben mit /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf

Niels Rask
quelle
1
Auf welcher Version bist du? Sie mussten also beide genannten Timer gleichzeitig überschreiben?
daniel f.
Ubuntu 16.04.4 x64
Niels Rask
2

Die offizielle Debian-Dokumentation unter https://wiki.debian.org/UnattendedUpgrades enthält derzeit einen Fehler, der viele Menschen irreführt. Es wird behauptet, dass Sie die Aktualisierungszeit überschreiben können, indem Sie eine aufgerufene Datei erstellen

/etc/systemd/system/apt-daily-upgrade.d/override.conf

Der richtige Weg ist jedoch

/etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
Rolf Wojtech
quelle
1
Schöne Entdeckung. IMHO ist die sicherste Sache zu verwenden sudo systemctl edit apt-daily.timer. Dadurch wird ein Editor mit der richtigen Drop-In-Datei geöffnet.
PerlDuck
2
Vielen Dank PerlDuck, ich habe die Debian Wiki-Seite mit Ihrem Vorschlag bearbeitet
Rolf Wojtech