chore: complete update
This commit is contained in:
146
x_ansible/README.md
Normal file
146
x_ansible/README.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user