Files
michaelschiemer/deployment/docs/status/deployment-todo.md
Michael Schiemer 1b9cda6dd3
Some checks failed
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Failing after 40s
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
🚀 Build & Deploy Image / Determine Build Necessity (push) Successful in 46s
Security Vulnerability Scan / Check for Dependency Changes (push) Successful in 1m0s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Successful in 11s
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
Security Vulnerability Scan / Composer Security Audit (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Successful in 12s
docs: Add CI image setup documentation
2025-11-08 13:38:46 +01:00

13 KiB

Deployment TODO - Komplette Implementierung

Status: ~99% Abgeschlossen - Initial Deployment erfolgreich
Letzte Aktualisierung: 2025-11-08
Ziel: Komplettes Deployment-Setup im deployment/ Ordner

🎯 Nächster kritischer Schritt: CI/CD Pipeline End-to-End testen!


Bereits Fertig

Infrastructure Stacks (deployed via Ansible)

  • Traefik - Reverse Proxy & SSL
  • PostgreSQL - Database Stack
  • Docker Registry - Private Registry
  • Gitea - Git Server + PostgreSQL (Initial Setup automatisiert)
  • Monitoring - Portainer + Grafana + Prometheus
  • WireGuard VPN - VPN Server

Ansible Playbooks

  • setup-infrastructure.yml - Infrastructure Stacks Deployment
  • setup-wireguard.yml - WireGuard VPN Setup
  • add-wireguard-client.yml - WireGuard Client hinzufügen
  • deploy-update.yml - Application Update Deployment
  • rollback.yml - Rollback zu vorheriger Version
  • setup-production-secrets.yml - Secrets Deployment
  • setup-ssl-certificates.yml - SSL Certificate Setup
  • sync-stacks.yml - Stacks synchronisieren
  • sync-application-code.yml - Code-Sync für Initial Deployment (Rsync)
  • deploy-application-code.yml - Code-Deployment via Git (CI/CD)
  • install-composer-dependencies.yml - Composer Dependencies Installation
  • build-initial-image.yml - Initial Docker Image Build
  • check-container-logs.yml - Container Logs prüfen
  • check-container-status.yml - Container Status prüfen
  • check-final-status.yml - Finale Status-Prüfung
  • fix-container-issues.yml - Container-Probleme beheben
  • fix-web-container.yml - Web Container Permissions beheben

Dokumentation

  • README.md - Deployment Übersicht
  • SETUP-GUIDE.md - Komplette Setup-Anleitung
  • DEPLOYMENT-STATUS.md - Aktueller Status
  • docs/WIREGUARD-SETUP.md - WireGuard Dokumentation
  • docs/guides/initial-deployment-guide.md - Initial Deployment Anleitung
  • docs/guides/code-deployment-workflow.md - Code Deployment Workflow
  • docs/troubleshooting/initial-deployment-issues.md - Troubleshooting Guide

Offene Aufgaben

1. Application Stack Integration

Status: Abgeschlossen - Initial Deployment erfolgreich

Was erledigt:

  • Application Stack zu setup-infrastructure.yml hinzufügen
  • .env Template für Application Stack erstellen (application.env.j2)
  • Ansible Playbook/Task für Application Stack Deployment
  • Database-Migration nach Application Deployment
  • Health-Check nach Application Deployment
  • Code-Synchronisation (Rsync) implementiert
  • Composer Dependencies Installation
  • Container-Konfiguration (Entrypoint Overrides, Permissions)
  • Environment Variables Loading (env_file mit absolutem Pfad)

Dateien:

  • deployment/stacks/production/docker-compose.yml Vorhanden
  • deployment/stacks/production/.env.example Vorhanden
  • deployment/stacks/production/.env Wird automatisch generiert
  • deployment/ansible/templates/application.env.j2 Vorhanden
  • deployment/ansible/playbooks/setup-infrastructure.yml Application integriert

Initial Deployment erfolgreich durchgeführt:

  • Code synchronisiert via sync-application-code.yml
  • Composer Dependencies installiert
  • Container laufen und sind healthy
  • Alle bekannten Probleme behoben (CRLF, Permissions, Environment Variables)

2. Application Stack .env Konfiguration

Status: Erledigt

Was erledigt:

  • Ansible Template für .env Datei erstellt (application.env.j2)
  • Passwörter aus Vault/PostgreSQL .env laden
  • Domain-Konfiguration aus Inventory
  • Environment-Variablen aus Vault/Template generieren

Dateien:

  • deployment/stacks/production/.env.example Vorhanden (angepasst für PostgreSQL)
  • deployment/stacks/production/.env ⚠️ Wird automatisch generiert
  • deployment/ansible/templates/application.env.j2 Erstellt
  • deployment/stacks/production/docker-compose.yml Angepasst (PostgreSQL statt MySQL)

3. Gitea Initial Setup

Status: Automatisiert - Vollständig implementiert

Was erledigt:

  • Ansible Playbook für automatische Initial Setup erstellt
  • app.ini Template mit INSTALL_LOCK = true
  • Admin-Benutzer wird automatisch über CLI erstellt
  • Vault-Variablen für Gitea Admin-Credentials
  • Playbook getestet und funktioniert

Dateien:

  • deployment/ansible/playbooks/setup-gitea-initial-config.yml
  • deployment/ansible/templates/gitea-app.ini.j2 (erweitert mit [security] Sektion)
  • deployment/ansible/secrets/production.vault.yml.example (Gitea-Variablen dokumentiert)

Verwendung:

cd deployment/ansible
ansible-playbook -i inventory/production.yml \
  playbooks/setup-gitea-initial-config.yml \
  --vault-password-file secrets/.vault_pass

4. Gitea Runner Setup abschließen

Status: Abgeschlossen

Was erledigt:

  • Gitea Admin Panel erreichbar
  • Actions in Gitea aktiviert
  • Registration Token abgerufen
  • Token in deployment/gitea-runner/.env eingetragen
  • Runner registriert
  • Runner läuft

5. CI/CD Pipeline finalisieren

Status: Vollständig konfiguriert - Bereit zum Testen

Was fehlt:

  • Gitea Repository Secrets konfigurieren:
    • REGISTRY_USER (Docker Registry Benutzername)
    • REGISTRY_PASSWORD (Docker Registry Passwort)
    • SSH_PRIVATE_KEY (SSH Private Key für Production-Server)
    • GITEA_TOKEN (Optional: Für automatische Issue-Erstellung)
  • Gitea Runner registrieren:
    • Registration Token von Gitea Admin Panel abgerufen
    • Token in deployment/gitea-runner/.env eingetragen
    • Runner registriert
    • Runner läuft
  • Pipeline End-to-End testen:
    • Test-Commit pushen oder Workflow manuell triggern
    • Alle Jobs erfolgreich (Tests, Build, Deploy)
    • Deployment erfolgreich auf Production
    • Health-Check erfolgreich

Dateien:

  • .gitea/workflows/production-deploy.yml Vorhanden
  • .gitea/workflows/update-production-secrets.yml Vorhanden
  • .gitea/workflows/security-scan.yml Vorhanden
  • deployment/CI_CD_STATUS.md Neu erstellt (detaillierte Checkliste)

Detaillierte Anleitung: Siehe deployment/CI_CD_STATUS.md für komplette Checkliste und Setup-Anleitung.

Nächste Schritte:

  1. Secrets in Gitea konfigurieren:
    • Gehe zu: https://git.michaelschiemer.de/michael/michaelschiemer/settings/secrets/actions
    • Füge Secrets hinzu: REGISTRY_USER, REGISTRY_PASSWORD, SSH_PRIVATE_KEY
  2. Gitea Runner registrieren:
    • Token von: https://git.michaelschiemer.de/admin/actions/runners
    • Konfiguriere deployment/gitea-runner/.env
    • Führe ./register.sh aus
  3. Pipeline testen:
    • Workflow manuell triggern oder Test-Commit pushen
    • Logs beobachten und Fehler beheben

5. Backup & Rollback Scripts

Status: ⚠️ Teilweise vorhanden

Was fehlt:

  • Backup-Playbook für Application Stack
  • Rollback-Playbook testen und finalisieren
  • PostgreSQL Backup-Integration
  • Gitea Data Backup
  • Registry Images Backup

Dateien:

  • deployment/ansible/playbooks/rollback.yml Vorhanden
  • deployment/stacks/postgresql/scripts/backup.sh Vorhanden
  • deployment/ansible/playbooks/backup.yml Fehlt

Nächste Schritte:

  1. Backup-Playbook erstellen
  2. Rollback-Playbook testen
  3. Backup-Scripte finalisieren
  4. Automatisierte Backups konfigurieren

6. Deployment Automation (Erledigt )

Status: Abgeschlossen

Was erledigt:

  • Alle Deployment-Operationen über Ansible Playbooks
  • Redundante Scripts entfernt
  • Dokumentation aktualisiert

Dateien:

  • deployment/ansible/playbooks/deploy-update.yml Vorhanden
  • deployment/ansible/playbooks/rollback.yml Vorhanden
  • deployment/ansible/playbooks/sync-code.yml Vorhanden
  • deployment/DEPLOYMENT_COMMANDS.md Command-Referenz erstellt

Alle Deployment-Operationen werden jetzt direkt über Ansible durchgeführt:

cd deployment/ansible
ansible-playbook -i inventory/production.yml playbooks/<playbook>.yml

7. Dokumentation vervollständigen

Status: Abgeschlossen - Alle Initial Deployment Dokumentation erstellt

Was erledigt:

  • Initial Deployment Guide erstellt
  • Code Deployment Workflow dokumentiert
  • Troubleshooting Guide für Initial Deployment erstellt
  • Application Stack Dokumentation aktualisiert
  • Deployment Commands aktualisiert
  • Quick Start Guide aktualisiert
  • Ansible Playbooks README aktualisiert

Dateien:

  • deployment/docs/guides/initial-deployment-guide.md Neu erstellt
  • deployment/docs/guides/code-deployment-workflow.md Neu erstellt
  • deployment/docs/troubleshooting/initial-deployment-issues.md Neu erstellt
  • deployment/docs/reference/application-stack.md Aktualisiert
  • deployment/docs/guides/deployment-commands.md Aktualisiert
  • deployment/docs/guides/quick-start.md Aktualisiert
  • deployment/ansible/playbooks/README.md Aktualisiert

🎯 Priorisierte Reihenfolge

Phase 1: Application Stack Deployment - ABGESCHLOSSEN

  1. Application Stack zu setup-infrastructure.yml hinzufügen

    • Task für Application Stack Deployment
    • .env Template erstellt (application.env.j2)
    • Database-Migration nach Deployment
  2. Application .env Konfiguration

    • Template application.env.j2 erstellt
    • Passwörter aus Vault/PostgreSQL .env laden
    • Template in Playbook integriert

Phase 2: CI/CD Setup - ABGESCHLOSSEN

  1. Gitea Initial Setup automatisiert

    • Playbook erstellt (setup-gitea-initial-config.yml)
    • app.ini Template mit INSTALL_LOCK = true
    • Admin-Benutzer wird automatisch erstellt
    • Getestet und funktioniert
  2. Gitea Runner Setup abschließen

    • Token konfiguriert
    • Runner läuft und ist registriert
  3. CI/CD Pipeline finalisieren

    • Secrets in Gitea konfiguriert
    • ⚠️ Pipeline testen - NÄCHSTER SCHRITT

⚠️ Phase 3: Testing & Finalisierung (IN ARBEIT)

  1. Pipeline End-to-End testen ⚠️ IN ARBEIT
    • Gitea Caching aktiviert (docker-compose.yml angepasst)
    • Prerequisites geprüft
    • Gitea Secrets verifiziert (laut Dokumentation konfiguriert)
    • Gitea Runner Status geprüft (registriert, aber nicht gestartet - korrekt)
    • Test-Commit erstellt
    • Traefik-Passwort zurückgesetzt
    • Traefik File-Provider-Konfiguration deaktiviert (gitea-service.yml entfernt - löste 504-Fehler)
    • Gitea app.ini aktualisiert (Cache-Sektion entfernt, keine 127.0.0.1-Werte mehr)
    • Gitea Repository erstellt (michael/michaelschiemer)
    • Git Remote konfiguriert
    • Pipeline End-to-End testen (Push und Deployment)
    • Staging Pipeline testen (nach erfolgreichem Push)
    • Production Pipeline testen (nach erfolgreichem Staging-Test)

Phase 3: Backup & Scripts

  1. Backup & Rollback Scripts

    • Backup-Playbook erstellen
    • Rollback testen
  2. Deployment Scripts finalisieren

    • Scripts testen und anpassen

Phase 4: Dokumentation

  1. Dokumentation aktualisieren
    • README aktualisieren
    • Status-Dokumente aktualisieren

📋 Quick Checklist

Application Stack

  • Application Stack in setup-infrastructure.yml hinzufügen
  • .env Template (application.env.j2) erstellen
  • Database-Migration Task hinzufügen
  • Health-Check nach Deployment

CI/CD

  • Gitea Runner Token konfigurieren
  • Runner registriert (nicht gestartet - korrekt, da Token konfiguriert)
  • Secrets in Gitea konfiguriert
  • Gitea Caching aktiviert (Konfiguration angepasst)
  • Traefik File-Provider-Konfiguration deaktiviert (gitea-service.yml entfernt)
  • Gitea app.ini bereinigt (Cache-Sektion entfernt)
  • Gitea Repository erstellt (michael/michaelschiemer)
  • Git Remote konfiguriert
  • Pipeline End-to-End testen ⚠️ NÄCHSTER SCHRITT

Scripts & Backup

  • Backup-Playbook erstellen (backup.yml vorhanden)
  • Rollback testen (Playbook vorhanden, muss getestet werden)
  • Deployment-Scripts finalisieren (Ansible Playbooks in Workflows integriert)

Dokumentation

  • Initial Deployment Dokumentation erstellt
  • CI/CD Workflow Dokumentation erstellt
  • Backup & Rollback Dokumentation erstellt
  • CI/CD Status aktualisiert
  • Deployment TODO aktualisiert

Nächster Schritt: CI/CD Pipeline End-to-End testen

Test-Ressourcen: