Infrastuktur-als-Code Migration

Wir haben gerade die Migration eines weiteren Schlüsselelements unserer Infrastruktur hin zur vollständig automatisierten Einrichtung abgeschlossen: der “originserver”. Der originserver ist der Halter der öffentlichen Dateien für die Website und des Repositorys von f-droid.org. Er ist auch dafür zuständig, die Aktualisierungen an alle primären Spiegelserver anzustoßen. Man kann somit mit Sicherheit sagen, dass der originserver im Zentrum unserer Arbeitsprozesse steht. Ciaran Gultnieks, der Gründer des F-Droid-Projekts, hat den originserver still und pflichtbewusst gewartet, seit er ihn vor mehr als einer Dekade erstmals eingerichtet hat. Anwender und Community von F-Droid schulden ihm Dankbarkeit für so viele Jahre treuer Dienste, in denen er die Dinge durch dick und dünn am Laufen gehalten hat.

Der Hauptgrund, warum wir diese Migration unternahmen, ist die Verbesserung unserer „Truck Number“. F-Droid verlässt sich auf Mitwirkende, die es am Laufen halten, aber keine Einzelperson sollte einzig und allein verantwortlich für irgendein Schlüsselelement der Infrastruktur sein. Wir sind immer noch ein kleines Team, also fokussierten wir uns darauf, diesen zentralen Server zu migrieren, damit er „Infrastruktur in Code-Form“ wird. Speziell die gesamte, zentrale Web- und Spiegel-Konfiguration wird nun in Ansible-Projekten in der GitLab-Gruppe von F-Droid gepflegt. Die Wartung von Servern als Code hat eine Reihe von wichtigen Vorzügen:

  • Die Server können von jemandem, der Ansible beherrscht, leicht neu geschaffen werden.
  • Automatisierte Server-Konfigurationen machen es technisch möglich, sehr detaillierte, maßgeschneiderte Sicherheits-Sandboxes zu gestalten.
  • Temporäre Instanzen vereinfachen die Auditierung, jeder mit Zugang zum Code kann testen.

Dies liefert eine riesige Verbesserung der „Truck Number“. Jeder mit Zugang zum Code kann nun eine Kopie unserer Infrastruktur neu erschaffen. Das F-Droid-Führungsgremium kontrolliert die Domain-Namen, kann also im Notfall den Domain-Namen auf eine neue Infrastruktur umleiten. Nachdem F-Droid rundherum freie Software ist, gibt es sehr wenige Dinge, die geheim gehalten werden müssen, im Grunde lediglich die kryptographischen Schlüssel zur Signierung, Verschlüsselung und Zugriffskontrolle. Diese Schlüssel können regeneriert und eingerichtet werden, wo sie gebraucht werden (z. B. Spiegelserver). Die Daten von f-droid.org werden quer durch viele Spiegelserver rund um die Welt vervielfältigt. Und die Website und das Repository von f-droid.org entstammt dem Einziehen vieler öffentlicher Quellcode-Repositorys zur Herstellung der Apps.

Letzter: der Signierserver

Es gibt einen letzten Produktionsserver, der nicht als Ansible-Code unterhalten wird: der Signierserver. Wir beabsichtigen, eventuell diese Maschine ebenfalls als Code zu schaffen. Es ist eine ganz einfache Einrichtung, so hat seine Umwandlung in Ansible momentan keine hohe Dringlichkeit. Es erfordert eine jungfräuliche Debian-Installation mit aus dem Git-Repository installiertem fdroidserver. Den Rest der benötigten Tools, wie apksigner, haben wir in Debian ausgelagert, wo sie gepflegt werden und allen zugänglich sind. Wenn ihr euch an einem Spaßprojekt beteiligen möchtet, wir brauchen noch ein Ansible-Projekt zur Erstellung eines alleinstehenden Signierservers. Sobald wir den haben, können wir damit per Iteration eine stark gehärtete Konfiguration erstellen.

Infrastrukture als Code

Hier sind die wichtigsten Server, die nun in Code-Form verwaltet werden. Nicht alle von ihnen sind schon öffentlich, wir wollen sichergehen, dass sie sorgfätig getestet und überprüft sind, bevor sie veröffentlicht werden (teilt uns mit, ob ihr euch an der Prüfung oder Erprobung beteiligen möchtet, dann können wir etwas zusammenstellen).

Die F-Droid-Community arbeitet daran, die Anwender so offen und transparent wie möglich zu beliefern. Dies ist ein großer Schritt, F-Droid verantwortungsbewusster denn je zu gestalten für alle von euch, die darauf vertrauen, von uns Apps zu erhalten, die ihr braucht.