Entferne ignorierten Ordner aus Git-Tracking
This commit is contained in:
56
README.md
Normal file
56
README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Ansible Playbook Runner
|
||||
|
||||
Mit dieser Anwendung kannst du Ansible‑Playbooks über eine Weboberfläche ausführen.
|
||||
Die App läuft auf deinem Rechner und ist über `https://man-dan-05` erreichbar.
|
||||
|
||||
## Was du brauchst
|
||||
|
||||
- **Python 3.11** (oder neuer)
|
||||
- **Docker** und **Docker Compose** (für den Nginx‑Proxy)
|
||||
- **Ansible** (auf deinem Rechner installiert)
|
||||
- Die Dateien aus diesem Projekt
|
||||
|
||||
## So startest du die Anwendung
|
||||
|
||||
1. **Zertifikate bereitlegen**
|
||||
Die Dateien `certs/man-dan-05.crt` und `certs/man-dan-05.key` müssen im Ordner `certs` liegen.
|
||||
(Falls du andere Zertifikate hast, passe die Pfade in `nginx.conf` an.)
|
||||
|
||||
2. **Playbooks ablegen**
|
||||
Lege deine `.yml`‑ oder `.yaml`‑Playbooks in den Ordner `playbooks`.
|
||||
|
||||
3. **Starten**
|
||||
Führe im Projektverzeichnis das Startskript aus:
|
||||
```bash
|
||||
./start.sh
|
||||
```
|
||||
Das Skript startet zuerst den Nginx‑Container und danach die Reflex‑App.
|
||||
|
||||
4. **Öffnen**
|
||||
Rufe im Browser `https://man-dan-05` auf.
|
||||
(Beim ersten Mal musst du die Zertifikatswarnung akzeptieren.)
|
||||
|
||||
## Was die einzelnen Dateien tun
|
||||
|
||||
| Datei | Aufgabe |
|
||||
|-------|---------|
|
||||
| `app/app.py` | Die eigentliche Anwendung (Weboberfläche, Playbook‑Ausführung) |
|
||||
| `rxconfig.py` | Einstellungen für Reflex (Ports, URLs, CORS) |
|
||||
| `nginx.conf` | Konfiguration für den Nginx‑Reverse‑Proxy (HTTPS, Weiterleitung) |
|
||||
| `docker-compose.yml` | Startet den Nginx‑Container |
|
||||
| `start.sh` | Startet Nginx und die App nacheinander |
|
||||
| `certs/` | Ordner für die SSL‑Zertifikate |
|
||||
| `playbooks/` | Ordner für deine Ansible‑Playbooks |
|
||||
| `outputs/` | Hier werden die Ausgaben der Playbook‑Läufe gespeichert |
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
- **Seite lädt nicht** → Prüfe, ob der Nginx‑Container läuft: `docker ps`
|
||||
- **Keine Playbooks gefunden** → Liegen `.yml`‑Dateien im Ordner `playbooks`?
|
||||
- **Zertifikatswarnung** → Das ist normal bei selbst erstellten Zertifikaten. Akzeptiere die Warnung.
|
||||
- **WebSocket‑Fehler** → Stelle sicher, dass in `rxconfig.py` die URL `wss://man-dan-05/api/_event` steht und in `nginx.conf` der Pfad `/api/_event` korrekt weitergeleitet wird.
|
||||
|
||||
## Anwendung beenden
|
||||
|
||||
- **Reflex‑App**: `Strg + C` im Terminal, in dem `reflex run` läuft.
|
||||
- **Nginx‑Container**: `docker compose down`
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-17T14:33:55Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-17T14:33:55Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T08:54:54Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T08:54:54Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T08:58:37Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T08:58:37Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:02:57Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:02:57Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:03:32Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:03:32Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:04:46Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:04:46Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:10:03Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:10:03Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:12:59Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:12:59Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:13:08Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:13:08Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:13:11Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:13:11Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:13:16Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:13:16Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T09:13:29Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T09:13:29Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T14:18:02Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T14:18:02Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,21 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo man-dan-05! Die Uhrzeit ist 2026-07-20T14:18:12Z"
|
||||
}
|
||||
|
||||
TASK [Uhrzeit ausgeben] ********************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Die Uhrzeit ist 2026-07-20T14:18:12Z"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,16 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo Welt"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,16 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo Welt"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
@@ -1,16 +0,0 @@
|
||||
|
||||
PLAY [Hallo Welt ausgeben] *****************************************************
|
||||
|
||||
TASK [Gathering Facts] *********************************************************
|
||||
ok: [localhost]
|
||||
|
||||
TASK [Hallo Welt ausgeben] *****************************************************
|
||||
ok: [localhost] => {
|
||||
"msg": "Hallo Welt"
|
||||
}
|
||||
|
||||
PLAY RECAP *********************************************************************
|
||||
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
||||
|
||||
[WARNING]: No inventory was parsed, only implicit localhost is available
|
||||
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
|
||||
Reference in New Issue
Block a user