4.7 KiB
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 Umgebungencommon.yml: Gemeinsame Variablenstaging.yml: Variablen für die Staging-Umgebungproduction.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 Anwendungdeploy_user: Benutzer für das Deployment (deploy)
Fehlerbehandlung
Wenn Sie auf Fehler stoßen, prüfen Sie folgende Punkte:
-
YAML-Syntax-Fehler:
- Führen Sie
./ansible/check_yaml.shaus, 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
- Führen Sie
-
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
- Stellen Sie sicher, dass die Scripts ausführbar sind:
-
Arbeitsverzeichnis:
- Führen Sie die Skripte vom Hauptverzeichnis des Projekts aus:
./ansible/deploy.sh - Bei manueller Ausführung: Wechseln Sie ins Ansible-Verzeichnis
- Führen Sie die Skripte vom Hauptverzeichnis des Projekts aus:
-
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
-
Abhängigkeiten:
- Stellen Sie sicher, dass Ansible installiert ist:
ansible --version - Bei Bedarf:
pip install ansible
- Stellen Sie sicher, dass Ansible installiert ist:
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:
- Führen Sie
./ansible/check_yaml.shaus, um problematische Dateien zu identifizieren - Entfernen Sie alle
---außer dem ersten in jeder Datei - 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:
- Überprüfen Sie die Datei
inventory/hosts.ini - Stellen Sie sicher, dass die angegebene Gruppe existiert
- Überprüfen Sie die
--limitOption 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.