Dokumentation
Agent-Updates
Der Agent aktualisiert sich nach einem Zeitplan, den Sie einstellen, oder in dem Moment, in dem Sie die Schaltfläche drücken. Diese Seite erklärt, was eine Veröffentlichung vertrauenswürdig macht, wann die Plattform von selbst eine austeilt und wie Sie eine von Hand einspielen.
Was ein Release vertrauenswürdig macht
Zwei unabhängige Tatsachen müssen zusammenpassen, bevor ein neues Binary auf Ihrem Host läuft: Sein Hash muss dem Wert entsprechen, den die Plattform veröffentlicht hat, und es muss eine gültige Signatur über seine reinen Bytes tragen, erzeugt mit dem Release-Schlüssel der Plattform.
- Die Prüfsumme belegt, dass der Download unbeschädigt ist. Über den Urheber sagt sie nichts.
- Die Signatur belegt, wer es erzeugt hat. Sie wird vom Agenten geprüft, bevor etwas bereitgestellt wird, und erneut von einem Skript, das nur root ändern kann, bevor das Binary installiert wird.
- Der öffentliche Schlüssel für diese zweite Prüfung gehört root. Der Systembenutzer, unter dem der Agent läuft, kann ihn nicht ersetzen, sodass es nicht reicht, den Agenten zu übernehmen, um ein Binary als root auszuführen.
- Ein Release ohne Signatur wird abgelehnt. Ebenso ein Release, dessen Signatur nicht passt, auch dann, wenn die Prüfsumme stimmt.
Aus dem Panel aktualisieren
Hinkt ein Agent hinterher, sagt das Panel es oben auf seiner Seite und in der Agentenliste. Drücken Sie die Schaltfläche, und die Plattform übergibt dem Agenten über die bereits offene Verbindung einen kurzlebigen Download-Link.
- Ein Agent: das Banner auf seiner Seite oder die Update-Karte auf seinem Einstellungen-Tab.
- Mehrere auf einmal: in der Agentenliste auswählen und die Auswahl aktualisieren. Die Zahl auf der Schaltfläche zählt nur die Agenten, die sich gerade wirklich aktualisieren lassen.
- Das Dashboard hat pro hinterherhinkendem Agenten eine direkte Schaltfläche, damit Sie nicht suchen müssen.
- Der Fortschritt übersteht ein Neuladen der Seite: Er wird aus dem laufenden Befehl gelesen und nicht aus etwas, das sich der Browser merkt.
Der nächtliche Zeitplan
Jeder Agent hat einen Zeitplan, und der steht ab Werk auf 03:00 Uhr mitteleuropäischer Zeit. Gibt es zu einer Ihrer Zeiten eine neuere Veröffentlichung, reicht die Plattform sie dem Agenten so weiter, wie es die Schaltfläche tut. Sonst ändert sich nichts: dieselbe signierte Datei, dieselben Prüfungen auf dem Host, dieselbe Rückkehr zur alten Fassung.
- Mehrere Zeiten je Agent, höchstens sechs, auf einem Raster von fünf Minuten. Sechs reicht für alle vier Stunden und ist klein genug, um es auf einen Blick zu lesen.
- Die Zeiten werden auf derselben Wanduhr gelesen wie der Rest des Bereichs. Eine Zeit, die es in der Nacht der Zeitumstellung nach vorn nicht gibt, läuft eine Stunde später statt ausgelassen zu werden, und eine Zeit, die es zweimal gibt, läuft einmal.
- Es gibt ein Nachholfenster von fünfzehn Minuten und nicht mehr. Eine Aktualisierung, die für 03:00 Uhr gedacht war, wollen Sie nicht um 09:00 Uhr: Sie haben die Nacht mit Absicht gewählt.
- Ein Agent, der zu seiner Zeit offline war, lässt die Nacht aus, ohne seinen Platz zu verbrauchen, und nimmt den nächsten. Ein Agent, der erreichbar war, aber schon aktuell, verbraucht den Platz sehr wohl, damit seine Geschichte zeigt, dass jemand nachgesehen hat.
- Höchstens fünf Agenten eines Kontos starten pro Minute. Eine Flotte von vierzig holt jeweils rund 22 MB, aus einem einzigen Netz, und das über acht Minuten zu verteilen passt in das Nachholfenster.
- Sie bekommen eine Meldung, wenn eine geplante Aktualisierung gelingt und wenn eine scheitert, gebündelt je Konto. Ein scheiternder Agent meldet sich höchstens einmal am Tag, damit ein festgefahrener Host Ihre Meldungen nicht mit demselben Satz füllt.
Was auf dem Host passiert
Der Agent lädt das neue Binary neben sich herunter, prüft Prüfsumme und Signatur und beendet sich erst dann. Systemd startet den Dienst neu, ein Schritt, der root gehört, prüft das bereitgestellte Binary noch einmal, installiert es atomar und probiert, ob es tatsächlich läuft, bevor es bleibt. Scheitert davon etwas, bleibt das alte Binary liegen, und der Dienst kommt damit zurück.
Von Hand
Sie müssen das Panel nicht benutzen. Alles, was die Schaltfläche tut, sind auch nur eine Handvoll Befehle, und das Panel schreibt sie Ihnen mit der aktuellen Prüfsumme und Signatur aus. Die beiden Schritte, die Sie behalten sollten, wenn Sie es selbst skripten, sind die Prüfschritte:
Prüfen Sie die Prüfsumme dessen, was Sie heruntergeladen haben.
echo "<sha256-from-the-panel> provibr-agent-linux-x86_64" | sha256sum -c -Prüfen Sie die Signatur gegen den öffentlichen Schlüssel auf dem Host. Das ist der Schritt, den ein einfacher Download nicht mitbringt, und der Schritt, auf den es ankommt.
openssl pkeyutl -verify -pubin -inkey /usr/local/lib/provibr-agent/license-signing.pub -rawin \
-in ./provibr-agent-linux-x86_64 -sigfile ./provibr-agent-linux-x86_64.sig