Zum Inhalt

Repo-Aufbau

Diese Seite zeigt, wo im Repo was liegt, womit es ausgerollt wird und was davon von Hand übertragen wird. Sie ist eine Orientierung, keine vollständige Dateiliste; die findest du im Repo selbst.

So ist das Repo aufgebaut

Ordner Was dort liegt Ausgerollt mit
syslet/ Konfiguration der Hosts: alle Container, Volumes, Netzwerke und Secrets syslet (cue cmd apply)
desec/ DNS-Einträge unserer beiden Domains desync (cue cmd apply)
apps/ Begleitmaterial zu einzelnen Apps, darunter die Authentik-Konfiguration je nach Inhalt: Terraform, von Hand oder gar nicht
rootfs/ Dateien, die auf den Hosts außerhalb von syslet liegen von Hand
docs/ diese Doku wird nicht ausgerollt, nur lokal gebaut
cue.mod/ Einstellungen für CUE, unter anderem die syslet-Version wird nicht ausgerollt

syslet/, desec/ und die Terraform-Ordner unter apps/authentik/ werden von genau einem Werkzeug ausgerollt; wer eine Datei ändert, weiß am Ordner, womit die Änderung auf den Weg geht.

Im Hauptordner liegen außerdem das Makefile und zensical.toml zum Bauen der Doku.

Was auf den Hosts läuft, steht nur in syslet/<host>/

Nur die Dateien in syslet/werner/ und syslet/containerhost/ (zusammen mit den gemeinsamen Dateien direkt in syslet/) werden auf die Hosts ausgerollt.

Unter apps/ liegen ebenfalls CUE-Dateien, die wie Stack-Dateien aussehen: apps/opencloud/, apps/dokuwiki/stack-dokuwiki.cue und apps/authentik/hack/stack-authentik.cue. Das sind frühere Proofs of Concept. Sie werden nirgends ausgerollt; wer sie ändert, ändert nichts an den Servern. Sie bleiben im Repo, damit ein späterer neuer Versuch darauf aufbauen kann.

Die Ordner im Einzelnen

syslet/

Direkt in syslet/ liegen die Dateien, die für alle Hosts gelten, darunter syslet/syslet.cue und die Verschlüsselungsregeln in syslet/.sops.yaml. Darunter gibt es einen Ordner je Host mit seinen Stacks und Secrets, und den Ordner syslet/scripts/ mit Skripten für Backup und Restore, die syslet in die Container legt.

Ausgerollt wird je Host aus seinem Ordner heraus. Welche Datei wofür da ist, steht in syslet in diesem Repo.

desec/

Je Domain eine Datei mit allen DNS-Einträgen: desec/desec_garage_lab_de.cue und desec/desec_garage_lab_net.cue. Die Dateien desync*.cue daneben verbinden diese Einträge mit desync und ändern sich so gut wie nie.

Nicht hier verwaltet wird die Registrierung der Domains; die liegt beim Webhoster und wird über seine Web-Oberfläche gepflegt (siehe DNS).

Mehr dazu: Verwaltung mit desync

apps/

Je App ein Ordner mit allem, was zu ihr gehört, aber nicht in eine Stack-Datei passt. So stören Notizen, Skripte und Vorlagen nicht beim Lesen der Stack-Dateien und sind trotzdem bei der App zu finden:

Die CUE-Dateien unter apps/ sind Proofs of Concept, siehe oben.

rootfs/

Dateien, die auf den Hosts an einem festen Ort im Dateisystem liegen und nicht von syslet verwaltet werden, etwa die systemd-Timer für das Backup oder die Einstellungen für automatische Updates. Je Host ein Ordner; der Pfad darunter entspricht dem Pfad auf dem Host, rootfs/werner/etc/dnf/automatic.conf liegt also auf werner unter /etc/dnf/automatic.conf.

Diese Dateien werden von Hand auf den Host kopiert. Warum das so ist und was dazugehört, steht in Statische Konfiguration.

docs/

Diese Doku. Sie wird mit zensical gebaut (make docs) und vorerst nur lokal angesehen. Daneben liegen noch einige ältere Seiten direkt in docs/, deren Inhalt nach und nach in die neue Struktur übernommen wird.

cue.mod/

cue.mod/module.cue legt fest, dass syslet/ und desec/ zu einem gemeinsamen CUE-Modul gehören, welche CUE-Version gilt und welche Version des CUE-Teils von syslet eingebunden ist. Geändert wird die Datei nur, wenn wir auf eine neue syslet-Version wechseln.

Weiterlesen