147 lines
4.7 KiB
Markdown
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.
|