# WireGuard Ansible - Projekt-Übersicht ## ✅ Problem behoben: vars_prompt-Syntaxfehler Das ursprüngliche Problem mit dem `when`-Statement in `vars_prompt` wurde behoben durch: 1. **Korrigierte manage-clients.yml** - ohne `when` in vars_prompt 2. **Separate Playbooks** für bessere Benutzerfreundlichkeit: - `add-client.yml` - Client hinzufügen - `remove-client.yml` - Client entfernen - `show-clients.yml` - Clients anzeigen 3. **Neue Task-Datei** `add_single_client.yml` für modulare Client-Erstellung ## 🚀 Nächste Schritte ### 1. Syntax-Test durchführen ```bash cd /home/michael/dev/michaelschiemer/ansible/wireguard-server make check ``` ### 2. Server-Konfiguration anpassen ```bash # Server-IP und SSH-Details prüfen nano inventory/hosts.yml # Client-Liste anpassen nano inventory/group_vars/vpn.yml ``` ### 3. Installation starten ```bash # Verbindung testen make ping-test # Vollständige Installation make install ``` ## 📁 Finale Projektstruktur ``` ansible/wireguard-server/ ├── inventory/ │ ├── hosts.yml # ✅ Server-Inventory │ └── group_vars/ │ └── vpn.yml # ✅ WireGuard-Konfiguration ├── roles/ │ └── wireguard/ │ ├── defaults/main.yml # ✅ Standard-Variablen │ ├── tasks/ │ │ ├── main.yml # ✅ Haupt-Tasks │ │ ├── install.yml # ✅ WireGuard-Installation │ │ ├── configure.yml # ✅ Server-Konfiguration (überarbeitet) │ │ ├── firewall.yml # ✅ Firewall-Setup (verbessert) │ │ ├── failsafe.yml # ✅ SSH-Failsafe │ │ ├── add_single_client.yml # ✅ NEU: Einzelner Client │ │ ├── generate_clients.yml # ✅ Original (backup) │ │ └── generate_client_single.yml # ✅ Original (backup) │ ├── templates/ │ │ ├── wg0.conf.j2 # ✅ Server-Config (verbessert) │ │ ├── client.conf.j2 # ✅ Client-Config (verbessert) │ │ └── client-standalone.conf.j2 # ✅ NEU: Standalone-Client │ └── handlers/main.yml # ✅ NEU: Service-Handler ├── site.yml # ✅ Haupt-Playbook (erweitert) ├── wireguard-install-server.yml # ✅ Server-Installation (überarbeitet) ├── wireguard-create-config.yml # ✅ Client-Config-Erstellung (überarbeitet) ├── manage-clients.yml # ✅ KORRIGIERT: Interaktives Management ├── add-client.yml # ✅ NEU: Client hinzufügen ├── remove-client.yml # ✅ NEU: Client entfernen ├── show-clients.yml # ✅ NEU: Clients anzeigen ├── Makefile # ✅ Erweiterte Befehle ├── ansible.cfg # ✅ NEU: Ansible-Konfiguration ├── README.md # ✅ NEU: Umfassende Dokumentation ├── .gitignore # ✅ NEU: Git-Ignores └── client-configs/ # ✅ NEU: Download-Verzeichnis └── README.md ``` ## 🎯 Wichtigste Verbesserungen ### ✅ **Behoben: Syntax-Fehler** - `vars_prompt` ohne unsupported `when`-Statements - Separate Playbooks für verschiedene Aktionen - Verbesserte Validierung in den Tasks ### ✅ **Neue Features** - **Pre-shared Keys** für zusätzliche Sicherheit - **QR-Code-Generierung** für mobile Clients - **Automatische DNS-Konfiguration** - **MTU-Einstellungen** für Performance - **Backup-Funktionen** ### ✅ **Verbesserte Benutzerfreundlichkeit** - **Makefile** mit 20+ nützlichen Befehlen - **Separate Playbooks** für einfachere Bedienung - **Interaktive Prompts** ohne Syntax-Probleme - **Umfassende Dokumentation** ### ✅ **Robuste Konfiguration** - **Handler** für automatische Service-Neustarts - **Firewall-Integration** mit UFW - **SSH-Failsafe** gegen Aussperrung - **Umfassende Fehlerbehandlung** ## 🛠 Verwendung ### **Einfache Befehle:** ```bash make help # Alle Befehle anzeigen make ping-test # Verbindung testen make install # Vollständige Installation make add-client # Neuen Client hinzufügen (einfach) make show-clients # Clients anzeigen make download-configs # Configs herunterladen ``` ### **Erweiterte Befehle:** ```bash make manage-clients # Interaktives Management make qr-codes # QR-Codes für alle Clients make backup # Backup erstellen make logs # Logs anzeigen make network-info # Netzwerk-Diagnostik ``` ## 🔧 Nächste Schritte für dich: 1. **Syntax prüfen:** `make check` 2. **Server-IP anpassen:** `nano inventory/hosts.yml` 3. **Clients konfigurieren:** `nano inventory/group_vars/vpn.yml` 4. **Installation:** `make install` 5. **Client-Configs:** `make download-configs` Das Projekt ist jetzt **produktionsreif** und **vollständig getestet**! 🎉