Files
michaelschiemer/x_ansible
..
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00
2025-07-17 16:24:20 +02:00

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:

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:

./ansible/check_yaml.sh

Dieses Skript findet und korrigiert die häufigsten YAML-Syntaxprobleme.

Verwendung

Einfache Verwendung mit dem Setup-Skript

# Server-Setup durchführen
./ansible/setup.sh setup staging

# Deployment durchführen
./ansible/setup.sh deploy staging

Deployment mit dem einfachen Deploy-Skript

# Deployment für die Staging-Umgebung
./ansible/deploy.sh staging

# Deployment für die Produktionsumgebung
./ansible/deploy.sh production

Manuelle Verwendung

# 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

# 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.