Statt einer Vorlage fuer alle liegt je Ring eine vollstaendige Compose im Repo. Eine Freigabe ist damit das Kopieren der Datei in den naechsten Ordner und in jedem git diff sichtbar. Fuer den Anfang ist nur "0 - intern" gefuellt; die beiden anderen Ordner erklaeren, dass dort noch kein Stand freigegeben ist. espo-compose-rendern nimmt jetzt <fqdn> und <ring> und bricht ab, wenn fuer den Ring kein Stand hinterlegt ist. Die Ringwerte 0/1/2 entsprechen dem Custom Field espo_ring. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.0 KiB
espo-deploy
Öffentliche, geheimnisfreie Artefakte für EspoCRM-Kunden-VMs. Alles hier wird von den VMs ohne Anmeldung abgerufen – es steht deshalb kein Passwort, kein Token und keine Kundenangabe in diesem Repository.
| Verzeichnis | Inhalt |
|---|---|
autoinstall/ |
NoCloud-Seed für die Basis-VM (user-data, meta-data) |
rmm-tasks/ |
Skripte, die als Task im ConnectWise RMM hinterlegt sind (Quelle für Änderungen) |
bin/ |
Skripte, die auf der VM unter /srv/espo/bin/ liegen und von Tasks aufgerufen werden |
docker/ |
je Ring ein Ordner mit der docker-compose.yml dieses Standes, dazu die EspoCRM-Grundeinstellungen (config-override.php) |
Konzept, Entscheidungen und Runbooks liegen im internen Repository espoCRM/espo-fleet-ops.
Autoinstall
autoinstall ds=nocloud-net\;s=https://gitea.subcura.net/EspoCRM_Public/espo-deploy/raw/branch/main/autoinstall/
Das Semikolon muss maskiert werden – in GRUB trennt ein unmaskiertes ; zwei Befehle.
Compose und Ringe
| Ordner | Ring | Inhalt |
|---|---|---|
docker/0 - intern/ |
0 | der aktuelle Stand, hier wird entwickelt und getestet |
docker/1 - Pilotkunde/ |
1 | freigegebener Stand für Pilotkunden |
docker/2 - Produktivkunde/ |
2 | freigegebener Stand für den Regelbetrieb |
Jeder Ordner enthält eine vollständige docker-compose.yml mit genau einem Platzhalter: __FQDN__.
Eine Freigabe ist das Kopieren dieser Datei in den nächsten Ordner – damit steht in jedem git diff, welche
Instanzen den neuen Stand bekommen.
bin/espo-compose-rendern <fqdn> <ring> holt den Stand des Rings, setzt den FQDN ein und schreibt
/srv/espo/docker-compose.yml. Diese Datei auf der VM ist ein Erzeugnis – sie wird bei jedem Lauf neu geschrieben,
Änderungen von Hand gehen verloren. Geändert wird im Repository.
Kundenspezifisches
Gehört nicht hierher, sondern in die Custom Fields des RMM (FQDN, Ring, Wartungsfenster). Geheimnisse entstehen auf
der VM (/srv/espo/secrets/, 0600) und verlassen sie nicht.