| compose | ||
| README.md | ||
touch README.md git init git checkout -b main git add README.md git commit -m "first commit" git remote add origin http://10.100.20.13:3000/infra/xy-xy.git git push -u origin main
und später dann nur noch mit git commit -m "" und git push... bzw. über das GUI
dev-int01
dev-int01 ist die zentrale Dev-/Git-VM fuer die interne Infrastruktur.
Zweck der VM
Auf dev-int01 laufen die Werkzeuge, mit denen Infrastruktur, Container-Stacks und Konfigurationen gepflegt werden.
Geplante bzw. genutzte Kernkomponenten:
- Forgejo als Git-Server
- code-server als browserbasierte Entwicklungsumgebung
- Arbeitsverzeichnisse fuer Infrastruktur-, Compose- und Konfigurationsdateien
- optionale Build-, Deploy- und Hilfsskripte
Damit ist dev-int01 nicht die Laufzeitumgebung fuer produktive Dienste, sondern die zentrale Stelle fuer:
- Erfassen und Bearbeiten von Konfigurationen
- Versionierung in Git
- Dokumentation von Infrastruktur
- Vorbereitung von Deployments auf andere VMs
Rolle im Gesamtbild
Im Zielbild ist dev-int01 die Dev-/Git-VM im internen Servernetz. Die Rollen sind bewusst getrennt [1]:
dev-int01: Entwicklung, Git, code-server, Forgejoinfra-int01: interne Reverse-Proxy- und technische Infra-Dienstemon01: Monitoring und Logging- weitere VMs: Apps, Media, Home Assistant, Mail
Das bedeutet:
- Auf
dev-int01werden Compose-Dateien, Konfigurationen und Doku erstellt. - Diese Inhalte werden in Forgejo versioniert.
- Andere VMs wie
infra-int01odermon01holen sich diese Inhalte spaeter pergit pullund setzen sie lokal um.
Grundprinzip
dev-int01 ist die Quelle fuer deklarative Infrastrukturdateien.
Der gewuenschte Ablauf ist:
- In
code-serveran einer lokalen Arbeitskopie arbeiten - Aenderungen in Git committen
- Nach Forgejo pushen
- Auf Ziel-VMs wie
infra-int01odermon01das Repository klonen oder aktualisieren - Dort mit
docker compose up -doder aehnlichen Befehlen ausrollen
Damit gilt:
code-server= Editor und Arbeitsumgebung- Forgejo = zentrales Git-Remote
- Ziel-VMs = Laufzeit- und Deployment-Ziele
Nutzen von dev-int01
Die VM bringt mehrere Vorteile:
- zentrale Pflege von Infrastrukturdateien
- nachvollziehbare Aenderungen ueber Git-Historie
- reproduzierbare Deployments
- Trennung zwischen Entwicklung und produktivem Betrieb
- einfache Zusammenarbeit zwischen Editor, Git und Zielsystemen
Dadurch werden Aenderungen nicht "direkt auf Produktivsystemen zusammengeklickt", sondern zuerst sauber erfasst, versioniert und dann ausgerollt.
Zusammenspiel von Forgejo, code-server und Infrastruktur
Forgejo
Forgejo ist der interne Git-Server.
Dort liegen die Repositories fuer:
- VM-Konfigurationen
- Docker-Compose-Dateien
- nginx-/Proxy-Konfigurationen
- Monitoring-Konfigurationen
- Dokumentation
- Deploy-/Hilfsskripte
code-server
code-server ist die Entwicklungsumgebung im Browser.
Dort werden lokale Arbeitskopien von Repositories geoeffnet und bearbeitet. code-server speichert selbst nicht "anstelle von Git", sondern arbeitet mit normalen lokalen Git-Repositories.
Infrastruktur-VMs
VMs wie infra-int01 und mon01 verwenden die in Forgejo versionierten Dateien als Quelle fuer ihre Konfiguration.
Typischer Ablauf:
- Repo auf
dev-int01in code-server bearbeiten - Aenderungen nach Forgejo pushen
- auf Ziel-VM Repo pullen
- lokal deployen
Empfohlener Workflow
Entwicklung auf dev-int01
- Repository in Forgejo anlegen
- Repository lokal in den Workspace klonen
- Repository in
code-serveroeffnen - Dateien bearbeiten
- committen
- pushen
Deployment auf Ziel-VMs
- Repository auf Ziel-VM klonen
- bei Aenderungen
git pull - danach Dienste aktualisieren oder neu starten
Verzeichnisidee
Beispielhaft getrennt nach Zweck:
/srv
├── data
│ ├── code-server
│ ├── forgejo
│ └── mariadb-forgejo
├── git
│ └── repos
└── workspace
├── infra
├── web-dev
├── builds
└── scripts