Autoinstall and Forgejo Infrastructure as Code Dieses Repository beinhaltet die Ansible-Playbooks und Konfigurationsdateien zur Verwaltung meines Arch Linux Laptops (Hyprland) sowie meiner Server-Infrastruktur. Ziel ist es, die Einrichtung neuer Maschinen zu automatisieren und Konfigurationen konsistent zu halten. Struktur des Repositories setup.yml : Haupt-Playbook für den lokalen Laptop (Arch Linux). Installiert Pakete und verteilt Dotfiles. server_setup.yml : Playbook für die Server-Verwaltung (Docker, Security, Updates). inventory : Inventar-Datei für den lokalen Host (Laptop). inventory_server : Inventar-Datei für Remote-Server (Hetzner, Home-Server). files/ : Enthält die originalen Konfigurationsdateien (Hyprland, Waybar, Skripte etc.), die von Ansible verteilt werden. Anleitung: Laptop (Neuinstallation) Voraussetzung: Eine minimale Arch Linux Installation mit funktionierendem Internetzugang. 1. Vorbereitung Zunächst müssen Git und Ansible manuell installiert werden, um das Repository zu klonen. sudo pacman -S git ansible 2. Repository klonen Das Repository wird in das Home-Verzeichnis geklont. mkdir -p ~/git cd ~/git git clone https://git.deinedomain.de/DeinUser/arch-setup.git cd arch-setup 3. Installation ausführen Das Playbook setup.yml nutzt die lokale Verbindung. Der Parameter -K ist notwendig, um das sudo -Passwort für die Paketinstallation abzufragen. ansible-playbook setup.yml -K Hinweis: Wenn das Playbook durchgelaufen ist, sollte ein Neustart erfolgen, damit alle Dienste (Hyprland, Login-Manager) korrekt greifen. Anleitung: Server Management Dieses Playbook dient dazu, Server (Hetzner VPS, Home-Server) zu aktualisieren oder neu aufzusetzen. Voraussetzungen Der SSH Public Key des Laptops muss auf den Servern in ~/.ssh/authorized_keys hinterlegt sein. Die IP-Adressen müssen in der Datei inventory_server aktuell sein. Ausführung Vom Laptop aus wird folgendes Kommando ausgeführt: ansible-playbook -i inventory_server server_setup.yml -K Dies führt Updates durch, prüft Docker-Container und stellt sicher, dass grundlegende Tools installiert sind. Workflow für Änderungen Um die Konfigurationen sauber zu halten, sollte nicht direkt in ~/.config gearbeitet werden, sondern immer über das Repository. Änderungen an Dateien im Ordner files/ vornehmen oder neue Pakete in setup.yml eintragen. Ansible Playbook lokal ausführen ( ansible-playbook setup.yml -K ), um Änderungen zu testen und anzuwenden. Wenn alles funktioniert: Commit und Push zum Git-Server. git add . git commit -m "Beschreibung der Änderung" git push Troubleshooting Fehler: "Connection refused" auf localhost Tritt auf, wenn Ansible versucht, sich per SSH mit dem eigenen Laptop zu verbinden, anstatt lokal zu arbeiten. Lösung: Sicherstellen, dass in der Datei setup.yml die Zeile connection: local enthalten ist oder dass in der Datei inventory folgender Eintrag steht: localhost ansible_connection=local Fehler: "Permission denied (publickey)" bei Servern Ansible kann sich nicht mit dem Remote-Server verbinden. Lösung: Prüfen, ob der SSH-Agent läuft und der Key geladen ist ( ssh-add -l ). Manuelle Verbindung testen: ssh user@server-ip . Falls die IP neu ist, muss sie ggf. erst in die known_hosts aufgenommen werden (einmal manuell per SSH verbinden und bestätigen). Fehler: Ansible überschreibt Änderungen immer wieder Wenn Ansible bei jedem Lauf "changed" anzeigt, obwohl nichts geändert wurde. Lösung: Oft stimmen die Dateirechte nicht überein. Im Playbook sicherstellen, dass mode: preserve genutzt wird, oder explizite Rechte ( 0644 für Dateien, 0755 für Ordner) gesetzt sind, die mit dem Ist-Zustand übereinstimmen. Git Push funktioniert nicht (Authentifizierung) Falls nach dem Passwort gefragt wird, aber der Login fehlschlägt. Lösung: Prüfen, ob die Remote-URL korrekt ist ( git remote -v ). Sicherstellen, dass Port 2222 (oder der konfigurierte Git-Port) genutzt wird, falls SSH verwendet wird. Bei HTTPS: Prüfen, ob das Passwort korrekt ist. Ggf. git config --global credential.helper store nutzen, um das Passwort einmalig dauerhaft zu speichern.