Files
schul-laptops/README.md
2026-07-13 13:17:14 +02:00

79 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# schul-laptops
1216 Linux-Mint-Laptops verwalten: **ansible-pull** (laufende Updates) +
**Clonezilla** (Komplett-Image ~1×/Jahr). Ueberblick: `COCKPIT.md` · Status:
`CLAUDE.md` · Architektur: `docs/architektur.md`.
## So funktioniert es (Normalfall)
Jeder Laptop zieht sich alle 30 Minuten (und bei jedem Boot) selbst dieses Repo
von `https://git.lehrstun.de/admin/schul-laptops.git` und fuehrt `local.yml` aus.
Es gibt keinen Push mehr — das Schul-WLAN laesst das nicht zu.
**Aenderung ausrollen:**
```bash
cd ~/projekte/schul-laptops
# z.B. Paket ergaenzen in group_vars/all.yml oder Task in local.yml
git add -A && git commit -m "..." && git push
# fertig — die Laptops holen es sich beim naechsten Timer-Lauf
```
**Auf einem Laptop nachsehen:**
```bash
systemctl list-timers ansible-pull* # laeuft der Timer?
journalctl -u ansible-pull -n 50 # letztes Pull-Log
sudo systemctl start ansible-pull.service # sofort ziehen statt warten
```
## Komplett-Image (~1×/Jahr, nach den Ferien)
Details in `CLONEZILLA_AUTOMATISCH.md`. Kurzfassung:
- **Erstinstallation:** Clonezilla-USB-Stick + externe Platte `DEZNTRSICHERUNG`,
danach einmalig `sudo files/first-boot-setup.sh laptopXX` (vergibt den Namen).
- **Danach ohne Stick:** Platte anstecken, Laptop einschalten. Ist das neueste
Image auf der Platte neuer als das installierte, bespielt sich der Laptop
selbst neu — der Hostname bleibt erhalten.
- **Neues Master-Image:** auf laptop03 im GRUB-Menue „Schul-Neuinstallation“
waehlen → „IMAGE ERSTELLEN“.
## Verzeichnisstruktur
```
~/projekte/schul-laptops/
├── local.yml # DAS Playbook (laeuft per ansible-pull auf jedem Laptop)
├── group_vars/all.yml # Paketliste u.a. Variablen
├── files/
│ ├── schul-pull.sh # Pull-Wrapper (HTTPS, SSH-Fallback)
│ ├── ansible-pull.service # systemd-Units
│ ├── ansible-pull.timer
│ └── first-boot-setup.sh # einmalig nach Erstinstallation
├── docs/ # Architektur, Entscheidungslog
└── playbooks/, inventory.yml, update-ips.sh, ansible.cfg # LEGACY, s.u.
```
## Legacy: Push-Betrieb (nur Heimnetz)
Das alte Push-Setup funktioniert weiterhin, aber **nur wenn die Laptops im
eigenen WLAN haengen** (Schul-WLAN blockiert SSH/mDNS zwischen Geraeten):
```bash
./update-ips.sh # IPs per mDNS einsammeln
ansible-playbook playbooks/ping.yml # Erreichbarkeit
ansible-playbook playbooks/update.yml # Updates pushen
ansible clients -m shell -a "df -h" # Ad-hoc-Befehl
```
Voraussetzung auf neuen Controllern: passwordless sudo fuer `puettmann`
(`sudo visudo``puettmann ALL=(ALL) NOPASSWD: ALL`).
## Problemloesungen
- **Laptop zieht nichts:** `journalctl -u ansible-pull` — HTTPS blockiert? Dann
greift automatisch der SSH-Fallback (Port 2222, Deploy-Key unter /root/.ssh).
- **Pull sofort ausloesen:** `sudo systemctl start ansible-pull.service`
- **Push: Permission denied:** `ssh-copy-id puettmann@<IP>`;
Host-Key-Warnung: `ssh-keygen -R <IP>`