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