Automatische Client-Konfiguration fuer KidsLab-Rechner (Arch Linux / Manjaro).
Die Clients holen sich ihre Konfiguration selbst per ansible-pull.
Einzeiler auf dem Client als root ausfuehren:
curl -s https://raw.githubusercontent.com/KidsLabDe/ansible-pull/main/bootstrap.sh | sudo bashansibleundgitwerden installiert (falls nicht vorhanden)- Die Ansible Collection
community.generalwird installiert ansible-pullklont dieses Repo und fuehrtsite.playbookaus
- Benutzer
kidslabanlegen (Gruppen: network, uucp) - WLAN-Verbindung "Zukunftsnaechte" einrichten
- Autologin (GDM + TTY)
- Wallpaper + GNOME-Einstellungen (Bildschirmsperre aus, Akzentfarbe, etc.)
- GDM Login-Banner
- Pacoloco-Mirror (192.168.178.95:9129) wenn im Netzwerk erreichbar
- Flatpak + Flathub einrichten
- Luanti (ehemals Minetest) via Flatpak installieren
- Spielkonfiguration (
minetest.conf) und Serverliste deployen
Alle Ausfuehrungen werden protokolliert:
cat /var/log/ansible-pull.logDer Zeitpunkt der letzten Ausfuehrung wird beim Terminal-Oeffnen angezeigt.
Sensible Daten (z.B. API-Zugangsdaten fuer OpenCode) sind mit Ansible Vault verschluesselt.
Damit ansible-pull die Secrets entschluesseln kann, muss auf jedem Client das Vault-Passwort hinterlegt sein.
Das Script setup-vault.sh auf den Client kopieren und als root ausfuehren:
sudo bash setup-vault.shDas legt /root/.vault_pass an. Diese Datei wird von ansible.cfg automatisch verwendet.
Wichtig: setup-vault.sh und .vault_pass sind im .gitignore und duerfen NICHT ins Repo committed werden.
# Neuen Wert verschluesseln:
ansible-vault encrypt_string 'neuer_wert' --name 'opencode_auth_token' --vault-password-file .vault_pass --encrypt-vault-id default
# Ausgabe in vars/vault.yml einfuegenEinfach den curl-Befehl nochmal ausfuehren. Bereits installierte Pakete werden uebersprungen, nur Aenderungen werden angewendet.
├── site.playbook # Haupt-Einstiegspunkt
├── local.playbook # System-Setup
├── luanti.playbook # Luanti Installation + Config
├── ai-tools.playbook # OpenCode + Goose Desktop
├── bootstrap.sh # curl|bash Installer
├── ansible.cfg # Log + Vault-Konfiguration
├── collections/
│ └── requirements.yml # Ansible Collection Abhaengigkeit
├── files/ # Konfigurationsdateien
├── templates/
│ └── opencode.json.j2 # OpenCode Config (Jinja2 Template)
└── vars/
└── vault.yml # Verschluesselte Zugangsdaten