Files
michaelschiemer/.deployment-backup/x_ansible/README.md
Michael Schiemer 9b74ade5b0 feat: Fix discovery system critical issues
Resolved multiple critical discovery system issues:

## Discovery System Fixes
- Fixed console commands not being discovered on first run
- Implemented fallback discovery for empty caches
- Added context-aware caching with separate cache keys
- Fixed object serialization preventing __PHP_Incomplete_Class

## Cache System Improvements
- Smart caching that only caches meaningful results
- Separate caches for different execution contexts (console, web, test)
- Proper array serialization/deserialization for cache compatibility
- Cache hit logging for debugging and monitoring

## Object Serialization Fixes
- Fixed DiscoveredAttribute serialization with proper string conversion
- Sanitized additional data to prevent object reference issues
- Added fallback for corrupted cache entries

## Performance & Reliability
- All 69 console commands properly discovered and cached
- 534 total discovery items successfully cached and restored
- No more __PHP_Incomplete_Class cache corruption
- Improved error handling and graceful fallbacks

## Testing & Quality
- Fixed code style issues across discovery components
- Enhanced logging for better debugging capabilities
- Improved cache validation and error recovery

Ready for production deployment with stable discovery system.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-13 12:04:17 +02:00

147 lines
4.7 KiB
Markdown

# Ansible-Setup für michaelschiemer.de
Dieses Verzeichnis enthält die Ansible-Konfiguration für das Deployment der Website.
## Verzeichnisstruktur
```
ansible/
├── ansible.cfg # Ansible-Konfigurationsdatei
├── check_yaml.sh # Skript zur Überprüfung der YAML-Syntax
├── deploy.sh # Deployment-Skript
├── docker/ # Docker-Konfigurationsdateien
├── group_vars/ # Variablen für Gruppen
├── inventory/ # Inventar-Dateien
│ ├── hosts.ini # Hauptinventar
│ ├── development # Entwicklungsumgebung
│ ├── staging # Staging-Umgebung
│ └── production # Produktionsumgebung
├── playbooks/ # Playbooks für verschiedene Aufgaben
├── roles/ # Rollen für verschiedene Komponenten
├── docker-compose.yml # Standard-Docker-Compose-Datei
├── setup.sh # Setup-Skript
└── setup.yml # Basis-Setup-Playbook
```
## Erste Schritte
Bevor Sie die Skripte verwenden können, müssen Sie diese ausführbar machen:
```bash
chmod +x ansible/setup.sh ansible/deploy.sh ansible/check_yaml.sh
```
## YAML-Syntax prüfen
Bevor Sie ein Deployment starten, sollten Sie die YAML-Syntax überprüfen:
```bash
./ansible/check_yaml.sh
```
Dieses Skript findet und korrigiert die häufigsten YAML-Syntaxprobleme.
## Verwendung
### Einfache Verwendung mit dem Setup-Skript
```bash
# Server-Setup durchführen
./ansible/setup.sh setup staging
# Deployment durchführen
./ansible/setup.sh deploy staging
```
### Deployment mit dem einfachen Deploy-Skript
```bash
# Deployment für die Staging-Umgebung
./ansible/deploy.sh staging
# Deployment für die Produktionsumgebung
./ansible/deploy.sh production
```
### Manuelle Verwendung
```bash
# Wechsle ins Ansible-Verzeichnis
cd ansible
# Server-Setup durchführen
ansible-playbook -i inventory/hosts.ini setup.yml --limit staging
# Deployment durchführen
ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml --limit staging
```
### Mit Tags
```bash
# Nur bestimmte Teile ausführen
ansible-playbook -i inventory/hosts.ini playbooks/deploy.yml --limit staging --tags="deploy,check"
```
## Umgebungsvariablen
Die Konfiguration für die verschiedenen Umgebungen wird in den entsprechenden Dateien unter `group_vars/` definiert:
- `all.yml`: Variablen für alle Umgebungen
- `common.yml`: Gemeinsame Variablen
- `staging.yml`: Variablen für die Staging-Umgebung
- `production.yml`: Variablen für die Produktionsumgebung
Folgende Hauptvariablen werden verwendet:
- `deploy_root`: Zielverzeichnis für das Deployment (/var/www/michaelschiemer)
- `app_domain`: Domain für die Anwendung
- `deploy_user`: Benutzer für das Deployment (deploy)
## Fehlerbehandlung
Wenn Sie auf Fehler stoßen, prüfen Sie folgende Punkte:
1. **YAML-Syntax-Fehler**:
- Führen Sie `./ansible/check_yaml.sh` aus, um Probleme zu identifizieren
- Stellen Sie sicher, dass jede YAML-Datei nur ein Dokument enthält (nur ein `---` am Anfang)
- Achten Sie auf korrekte Einrückung und Leerzeichen
2. **Berechtigungen**:
- Stellen Sie sicher, dass die Scripts ausführbar sind: `chmod +x ansible/*.sh`
- Überprüfen Sie, ob der Benutzer die nötigen Berechtigungen auf dem Server hat
3. **Arbeitsverzeichnis**:
- Führen Sie die Skripte vom Hauptverzeichnis des Projekts aus: `./ansible/deploy.sh`
- Bei manueller Ausführung: Wechseln Sie ins Ansible-Verzeichnis
4. **SSH-Schlüssel**:
- Prüfen Sie, ob der SSH-Schlüssel für den Zugriff auf den Server korrekt eingerichtet ist
- Testen Sie die SSH-Verbindung manuell: `ssh deploy@94.16.110.151`
5. **Abhängigkeiten**:
- Stellen Sie sicher, dass Ansible installiert ist: `ansible --version`
- Bei Bedarf: `pip install ansible`
## Troubleshooting häufiger Fehler
### "We were unable to read either as JSON nor YAML"
Dieser Fehler tritt auf, wenn mehrere YAML-Dokumente in einer Datei vorhanden sind. Lösung:
1. Führen Sie `./ansible/check_yaml.sh` aus, um problematische Dateien zu identifizieren
2. Entfernen Sie alle `---` außer dem ersten in jeder Datei
3. Stellen Sie sicher, dass keine leeren Zeilen vor dem ersten `---` stehen
### "No hosts matched"
Dieser Fehler tritt auf, wenn die Host-Gruppe nicht im Inventory gefunden wurde:
1. Überprüfen Sie die Datei `inventory/hosts.ini`
2. Stellen Sie sicher, dass die angegebene Gruppe existiert
3. Überprüfen Sie die `--limit` Option und den Host-Namen
## Weitere Informationen
Diese Konfiguration verwendet Docker und Docker Compose für die Containerisierung der Anwendung. Die Deployment-Strategie basiert auf der Synchronisierung von Dateien vom Entwicklungsrechner zum Zielserver und dem Starten der Container über Docker Compose.