Ready
This commit is contained in:
parent
991d558c16
commit
193e996784
3 changed files with 222 additions and 0 deletions
139
README.md
139
README.md
|
|
@ -0,0 +1,139 @@
|
|||
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, Forgejo
|
||||
- `infra-int01`: interne Reverse-Proxy- und technische Infra-Dienste
|
||||
- `mon01`: Monitoring und Logging
|
||||
- weitere VMs: Apps, Media, Home Assistant, Mail
|
||||
|
||||
Das bedeutet:
|
||||
|
||||
- Auf `dev-int01` werden Compose-Dateien, Konfigurationen und Doku erstellt.
|
||||
- Diese Inhalte werden in Forgejo versioniert.
|
||||
- Andere VMs wie `infra-int01` oder `mon01` holen sich diese Inhalte spaeter per `git pull` und setzen sie lokal um.
|
||||
|
||||
## Grundprinzip
|
||||
|
||||
`dev-int01` ist die Quelle fuer deklarative Infrastrukturdateien.
|
||||
|
||||
Der gewuenschte Ablauf ist:
|
||||
|
||||
1. In `code-server` an einer lokalen Arbeitskopie arbeiten
|
||||
2. Aenderungen in Git committen
|
||||
3. Nach Forgejo pushen
|
||||
4. Auf Ziel-VMs wie `infra-int01` oder `mon01` das Repository klonen oder aktualisieren
|
||||
5. Dort mit `docker compose up -d` oder 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-int01` in 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-server` oeffnen
|
||||
- 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:
|
||||
|
||||
```text
|
||||
/srv
|
||||
├── data
|
||||
│ ├── code-server
|
||||
│ ├── forgejo
|
||||
│ └── mariadb-forgejo
|
||||
├── git
|
||||
│ └── repos
|
||||
└── workspace
|
||||
├── infra
|
||||
├── web-dev
|
||||
├── builds
|
||||
└── scripts
|
||||
33
compose/code-server/compose.yaml
Normal file
33
compose/code-server/compose.yaml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
services:
|
||||
code-server:
|
||||
image: lscr.io/linuxserver/code-server:latest
|
||||
container_name: code-server
|
||||
restart: unless-stopped
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 1.1.1.1
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Zurich
|
||||
- PASSWORD=dasmussSafesein101
|
||||
- SUDO_PASSWORD=Burrito737
|
||||
- DEFAULT_WORKSPACE=/srv/workspace
|
||||
- INSTALL_NODE=true
|
||||
ports:
|
||||
- "8443:8443"
|
||||
volumes:
|
||||
- /srv/data/code-server:/config
|
||||
- /srv/workspace:/srv/workspace
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -f http://localhost:8443/ || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 20s
|
||||
networks:
|
||||
- dev-nw
|
||||
|
||||
networks:
|
||||
dev-nw:
|
||||
external: true
|
||||
50
compose/forgejo/compose.yaml
Normal file
50
compose/forgejo/compose.yaml
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
services:
|
||||
forgejo-db:
|
||||
image: mariadb:11
|
||||
container_name: forgejo-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- MARIADB_ROOT_PASSWORD=dasmussSafesein101
|
||||
- MARIADB_DATABASE=forgejo
|
||||
- MARIADB_USER=forgejo
|
||||
- MARIADB_PASSWORD=dasmussSafesein101
|
||||
- TZ=Europe/Zurich
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_unicode_ci
|
||||
volumes:
|
||||
- /srv/data/mariadb-forgejo:/var/lib/mysql
|
||||
networks:
|
||||
- dev-nw
|
||||
|
||||
forgejo:
|
||||
image: codeberg.org/forgejo/forgejo:11
|
||||
container_name: forgejo
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- forgejo-db
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- TZ=Europe/Zurich
|
||||
- FORGEJO__server__ROOT_URL=http://10.100.20.13:3000/
|
||||
- FORGEJO__server__DISABLE_SSH=true
|
||||
- FORGEJO__database__DB_TYPE=mysql
|
||||
- FORGEJO__database__HOST=forgejo-db:3306
|
||||
- FORGEJO__database__NAME=forgejo
|
||||
- FORGEJO__database__USER=forgejo
|
||||
- FORGEJO__database__PASSWD=dasmussSafesein101
|
||||
- FORGEJO__repository__ROOT=/git/repos
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- /srv/data/forgejo:/data
|
||||
- /srv/git/repos:/git/repos
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
networks:
|
||||
- dev-nw
|
||||
|
||||
networks:
|
||||
dev-nw:
|
||||
external: true
|
||||
Loading…
Add table
Add a link
Reference in a new issue