Compare commits
2 Commits
72d0b11647
...
f81dbd8d54
| Author | SHA1 | Date | |
|---|---|---|---|
| f81dbd8d54 | |||
| 313cfae828 |
@@ -1,110 +1,36 @@
|
||||
# Anleitung: Nach dem Klonen
|
||||
|
||||
Diese Anleitung gilt NACHDEM du:
|
||||
- Das Image mit Clonezilla aufgespielt hast
|
||||
- Das First-Boot-Script ausgefuehrt hast (`sudo ~/ansible-schule/files/first-boot-setup.sh laptopXX`)
|
||||
Gilt fuer die **Erstinstallation per USB-Stick** (Weg 3 in
|
||||
`CLONEZILLA_AUTOMATISCH.md`). Beim automatischen Jahres-Reimage von der
|
||||
externen Platte ist NICHTS davon noetig — dort passiert alles von selbst.
|
||||
|
||||
---
|
||||
|
||||
## Auf dem Controller (laptop03)
|
||||
|
||||
### Schritt 1: IPs aktualisieren
|
||||
## Auf dem frisch geklonten Laptop (einmalig)
|
||||
|
||||
```bash
|
||||
cd ~/ansible-schule
|
||||
./update-ips.sh
|
||||
sudo ~/projekte/schul-laptops/files/first-boot-setup.sh laptopXX
|
||||
```
|
||||
|
||||
Das Script findet automatisch alle eingeschalteten Laptops im Netzwerk und traegt ihre IPs in die inventory.yml ein.
|
||||
Das Script setzt Hostname, SSH-Host-Keys und Machine-ID, entfernt den
|
||||
Admin-Key (ausser auf laptop03) und aktiviert den ansible-pull-Timer.
|
||||
**Das war's** — ab jetzt holt sich der Laptop alle 30 Minuten selbst
|
||||
Updates und Konfiguration aus Gitea, egal in welchem Netz er haengt.
|
||||
|
||||
**Erwartete Ausgabe:**
|
||||
```
|
||||
=== IP-Adressen aktualisieren ===
|
||||
|
||||
laptop01: 192.168.x.x
|
||||
laptop02: nicht erreichbar
|
||||
laptop03: 192.168.x.x
|
||||
...
|
||||
|
||||
=== Fertig ===
|
||||
Aktualisiert: 5
|
||||
Nicht erreichbar: 11
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Schritt 2: Verbindung testen
|
||||
## Kontrolle (optional)
|
||||
|
||||
```bash
|
||||
ansible all -m ping
|
||||
systemctl list-timers ansible-pull* # Timer aktiv?
|
||||
journalctl -u ansible-pull -n 30 # letzter Pull-Lauf ok?
|
||||
cat /etc/schul-image-version # installiertes Image
|
||||
```
|
||||
|
||||
**Erfolg sieht so aus:**
|
||||
```
|
||||
laptop03 | SUCCESS => { "ping": "pong" }
|
||||
laptop10 | SUCCESS => { "ping": "pong" }
|
||||
```
|
||||
|
||||
**Fehler ignorieren** fuer Laptops die nicht eingeschaltet sind - das ist normal.
|
||||
|
||||
---
|
||||
|
||||
### Schritt 3: Updates auf alle erreichbaren Laptops
|
||||
|
||||
```bash
|
||||
ansible-playbook playbooks/update.yml
|
||||
```
|
||||
|
||||
Oder nur auf bestimmte:
|
||||
|
||||
```bash
|
||||
ansible-playbook playbooks/update.yml --limit laptop10,laptop11
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schnellreferenz
|
||||
|
||||
| Was | Befehl |
|
||||
|-----|--------|
|
||||
| IPs aktualisieren | `./update-ips.sh` |
|
||||
| Alle pingen | `ansible all -m ping` |
|
||||
| System-Update | `ansible-playbook playbooks/update.yml` |
|
||||
| Software installieren | `ansible-playbook playbooks/install-software.yml -e "packages=['vlc']"` |
|
||||
| Neustarten | `ansible-playbook playbooks/reboot.yml` |
|
||||
| Nur bestimmte Rechner | `--limit laptop05,laptop06` |
|
||||
|
||||
---
|
||||
|
||||
## Problemloesungen
|
||||
|
||||
### "nicht erreichbar" bei update-ips.sh
|
||||
|
||||
- Ist der Laptop eingeschaltet?
|
||||
- Ist er im gleichen Netzwerk (WLAN/Kabel)?
|
||||
- Wurde das First-Boot-Script ausgefuehrt?
|
||||
|
||||
### SSH-Fehler "Host key verification failed"
|
||||
|
||||
```bash
|
||||
ssh-keygen -R 192.168.x.x
|
||||
```
|
||||
|
||||
(Die IP durch die tatsaechliche IP ersetzen)
|
||||
|
||||
### Ansible findet inventory nicht
|
||||
|
||||
Immer aus dem richtigen Verzeichnis ausfuehren:
|
||||
|
||||
```bash
|
||||
cd ~/ansible-schule
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Checkliste neuer Laptop
|
||||
|
||||
- [ ] Image mit Clonezilla aufgespielt
|
||||
- [ ] First-Boot-Script: `sudo ~/ansible-schule/files/first-boot-setup.sh laptopXX`
|
||||
- [ ] Auf Controller: `./update-ips.sh`
|
||||
- [ ] Testen: `ansible laptopXX -m ping`
|
||||
- [ ] Image per Stick aufgespielt (nimmt automatisch das neueste)
|
||||
- [ ] `sudo files/first-boot-setup.sh laptopXX` ausgefuehrt
|
||||
- [ ] `journalctl -u ansible-pull` zeigt einen erfolgreichen Lauf
|
||||
|
||||
## Legacy: Push-Betrieb im Heimnetz
|
||||
|
||||
Nur noetig, wenn du aktiv per Push arbeiten willst (funktioniert nicht im
|
||||
Schul-WLAN) — siehe README.md, Abschnitt „Legacy“ (`update-ips.sh`,
|
||||
`ansible-playbook playbooks/...`).
|
||||
|
||||
16
CHANGELOG.md
16
CHANGELOG.md
@@ -1,5 +1,21 @@
|
||||
# Changelog
|
||||
|
||||
## 2026-07-13 — Umbau umgesetzt (Teile A–C)
|
||||
|
||||
- **Server:** DNS `git.lehrstun.de` (A-Record via Server-Token angelegt),
|
||||
Nginx-vHost mit Let's-Encrypt-Zertifikat → Gitea; Read-only-Deploy-Key
|
||||
`ansible-pull-deploy` am Repo, privater Key unter `/root/.ssh/` auf laptop03.
|
||||
Beide Pull-Wege (HTTPS + SSH 2222) Ende-zu-Ende getestet.
|
||||
- **Pull-Mechanik:** `local.yml`, `schul-pull.sh`, systemd-Timer (Boot + 30 min)
|
||||
— laeuft auf laptop03, verwaltet sich selbst per Pull.
|
||||
- **Jahres-Reimage:** `reimage-check.service` (auf laptop03 deaktiviert),
|
||||
GRUB-Eintrag „Schul-Neuinstallation“ (custom.cfg, GRUB_DEFAULT=saved),
|
||||
`schul-reimage.sh` mit Mini-Menue und ocs-sr-Batch-Aufrufen. Per Pull verteilt.
|
||||
- **Doku:** README, CLONEZILLA_AUTOMATISCH, ANLEITUNG_NACH_KLONEN auf den neuen
|
||||
Ablauf umgestellt.
|
||||
- **Offen:** Live-Dateien vom Stick, Image umbenennen, Stick-Update,
|
||||
Reimage-Test (siehe [[CLAUDE]]).
|
||||
|
||||
## 2026-07-13 — Projektgruendung & Kurswechsel auf Pull
|
||||
|
||||
- Alter git-loser Ordner `~/ansible-schule` (Jan/Feb 2026) nach
|
||||
|
||||
17
CLAUDE.md
17
CLAUDE.md
@@ -31,15 +31,20 @@ Benutzer auf den Laptops: `puettmann` (Admin, passwordless sudo), `schueler` (oh
|
||||
|
||||
## Blocker
|
||||
|
||||
- Keine.
|
||||
- CLONEZILLA-Stick + Platte DEZNTRSICHERUNG muessen einmal an laptop03:
|
||||
Live-Dateien nach `/boot/clonezilla/` kopieren, Bestandsimage umbenennen,
|
||||
Stick-Menue auf Datums-Images umstellen.
|
||||
|
||||
## Naechste Schritte
|
||||
|
||||
- [ ] Teil A: Server — DNS `git.lehrstun.de`, Nginx-vHost, Deploy-Key
|
||||
- [ ] Teil B: Pull-Mechanik (local.yml, schul-pull.sh, systemd-Units, first-boot)
|
||||
- [ ] Teil C: Jahres-Reimage (Clonezilla lokal, Boot-Check, Mini-Menue)
|
||||
- [ ] Teil D: Aktivierung auf laptop03 + Verifikation
|
||||
- [ ] Master-Image erstellen, Rollout auf laptop01–16 (auch laptop10 neu)
|
||||
- [x] Teil A: Server — DNS `git.lehrstun.de`, Nginx-vHost (Cert ok), Deploy-Key
|
||||
- [x] Teil B: Pull-Mechanik — laeuft auf laptop03 (Timer aktiv, Pull getestet)
|
||||
- [x] Teil C: Reimage-Skripte, Boot-Check, GRUB-Eintrag (per Pull verteilt)
|
||||
- [ ] Clonezilla-Live-Dateien vom Stick nach `/boot/clonezilla/` (braucht Stick)
|
||||
- [ ] Bestandsimage auf Platte umbenennen in `schule-laptop-2026-02-01` (braucht Platte)
|
||||
- [ ] Stick-Menue auf „neuestes Image“-Logik umstellen (braucht Stick)
|
||||
- [ ] Reimage-Kette testen: trocken auf laptop03, echt auf laptop10
|
||||
- [ ] Master-Image erstellen (GRUB → IMAGE ERSTELLEN), Rollout laptop01–16
|
||||
|
||||
## Hinweise
|
||||
|
||||
|
||||
@@ -1,99 +1,82 @@
|
||||
# Clonezilla Automatisiert - USB + Externe Festplatte
|
||||
# Clonezilla — Images erstellen & aufspielen
|
||||
|
||||
## Setup
|
||||
|
||||
- **USB-Stick:** CLONEZILLA (7,6 GB) - enthält Clonezilla Live
|
||||
- **Externe Festplatte:** DEZNTRSICHERUNG (1,8 TB) - enthält das Image
|
||||
- **Image-Name:** `schule-laptop`
|
||||
- **Externe Festplatte:** `DEZNTRSICHERUNG` (1,8 TB) — traegt die Images
|
||||
- **Images:** Ordner `schule-laptop-JJJJ-MM-TT` — es koennen mehrere liegen,
|
||||
**das neueste (Datumsname) gewinnt immer**
|
||||
- **USB-Stick:** `CLONEZILLA` — nur noch fuer die **Erstinstallation** und als
|
||||
Rettung, falls ein Laptop gar nicht mehr bootet
|
||||
- Jeder Laptop merkt sich sein installiertes Image in `/etc/schul-image-version`
|
||||
|
||||
## Boot-Menü
|
||||
## Weg 1: Jahres-Reimage OHNE Stick (der Normalfall)
|
||||
|
||||
Beim Booten vom USB-Stick erscheinen zwei Hauptoptionen:
|
||||
1. Platte `DEZNTRSICHERUNG` an den Laptop anstecken
|
||||
2. Laptop einschalten — mehr nicht
|
||||
3. Der Laptop erkennt beim Boot, dass ein neueres Image auf der Platte liegt,
|
||||
und startet automatisch in die Image-Station (Clonezilla aus `/boot/clonezilla`,
|
||||
laeuft komplett im RAM)
|
||||
4. Mini-Menue erscheint:
|
||||
- **AUFSPIELEN** — vorausgewaehlt, startet nach 20 s von selbst
|
||||
- **IMAGE ERSTELLEN** — diesen Rechner als neues Image sichern
|
||||
- **Abbrechen** — normaler Neustart
|
||||
5. Beim Aufspielen bleibt der **Hostname erhalten** (laptop11 bleibt laptop11);
|
||||
SSH-Host-Keys, Machine-ID und Versionsdatei werden automatisch neu gesetzt.
|
||||
Danach: Poweroff. Fertig — kein first-boot-Script noetig.
|
||||
|
||||
```
|
||||
>>> IMAGE AUFSPIELEN (Laptop bespielen) <<< [Standard]
|
||||
>>> IMAGE ERSTELLEN (Laptop sichern) <<<
|
||||
```
|
||||
Steckt die Platte beim naechsten Boot noch, passiert nichts mehr
|
||||
(Versionsvergleich). **laptop03 (Master) bespielt sich nie selbst** —
|
||||
dort ist der Boot-Check deaktiviert.
|
||||
|
||||
**Nach der Auswahl läuft alles automatisch** - keine weitere Eingabe nötig!
|
||||
Der Computer fährt nach Abschluss automatisch herunter.
|
||||
## Weg 2: Neues Master-Image erstellen (auf laptop03)
|
||||
|
||||
## Workflow
|
||||
1. Platte anstecken, laptop03 neu starten
|
||||
2. Im GRUB-Menue **„Schul-Neuinstallation“** waehlen (Eintrag ist im normalen
|
||||
Boot nicht sichtbar, ggf. `Esc`/`Shift` beim Boot halten)
|
||||
3. Im Mini-Menue **„IMAGE ERSTELLEN“** (Taste `i`) — Image heisst automatisch
|
||||
`schule-laptop-<heutiges Datum>` und ist damit sofort das neueste
|
||||
4. Rechner faehrt herunter, wenn fertig
|
||||
|
||||
### 1. Master-Image erstellen (einmalig)
|
||||
## Weg 3: Erstinstallation per USB-Stick
|
||||
|
||||
1. Master-Laptop (laptop03) vorbereiten und testen
|
||||
2. USB-Stick und externe Festplatte anschließen
|
||||
3. Von USB booten (F12)
|
||||
4. **"IMAGE ERSTELLEN"** wählen
|
||||
5. Warten bis Computer herunterfährt
|
||||
6. Image liegt dann auf der externen Festplatte als Ordner `schule-laptop`
|
||||
|
||||
### 2. Image auf andere Laptops aufspielen
|
||||
|
||||
1. USB-Stick und externe Festplatte anschließen
|
||||
2. Von USB booten (F12)
|
||||
3. **"IMAGE AUFSPIELEN"** wählen (ist bereits vorausgewählt)
|
||||
4. Warten bis Computer herunterfährt (~5-10 Min mit SSD)
|
||||
5. First-Boot-Script ausführen:
|
||||
1. Stick `CLONEZILLA` **und** Platte anstecken, per `F12` vom Stick booten
|
||||
2. „IMAGE AUFSPIELEN“ waehlen — nimmt automatisch das neueste Image
|
||||
3. Nach dem Poweroff booten und einmalig den Namen vergeben:
|
||||
```bash
|
||||
sudo ~/ansible-schule/files/first-boot-setup.sh laptop05
|
||||
sudo ~/projekte/schul-laptops/files/first-boot-setup.sh laptop05
|
||||
```
|
||||
Ab dann laeuft ansible-pull und der Laptop haelt sich selbst aktuell.
|
||||
|
||||
## Technische Details
|
||||
|
||||
### Clonezilla-Parameter für Image erstellen
|
||||
```
|
||||
ocs-sr -q2 -c -j2 -z5p -i 4096 -sfsck -senc -p poweroff savedisk schule-laptop sda
|
||||
```
|
||||
- `-q2` - Priorität: partclone > partimage > dd
|
||||
- `-z5p` - Kompression mit zstd (schnell, gut)
|
||||
- `-i 4096` - Splitgröße 4GB
|
||||
- `-sfsck` - Filesystem-Check überspringen (schneller)
|
||||
- `-p poweroff` - Nach Abschluss herunterfahren
|
||||
- Alle `ocs-sr`-Aufrufe laufen im **Batch-Modus ohne Sicherheitsabfragen und
|
||||
ohne Nachpruefung** (`-batch -scs/-scr -icds -sfsck`, Entscheidung E-004 —
|
||||
12x identische Hardware, Fehlerfaelle macht Herb von Hand)
|
||||
- Restore: `ocs-sr -g auto -e1 auto -e2 -r -j2 -icds -k1 -scr -batch -p true restoredisk <image> sda`
|
||||
- Save: `ocs-sr -q2 -j2 -z5p -i 4096 -sfsck -senc -scs -batch -p true savedisk <image> sda`
|
||||
- Menue/Ablauf: `files/clonezilla/schul-reimage.sh` (liegt auf jedem Laptop
|
||||
unter `/boot/clonezilla/`, wird per ansible-pull aktuell gehalten)
|
||||
- GRUB-Eintrag: `files/clonezilla/grub-custom.cfg` → `/boot/grub/custom.cfg`
|
||||
- Boot-Check: `files/reimage-check.sh` + `.service`
|
||||
|
||||
### Clonezilla-Parameter für Image aufspielen
|
||||
```
|
||||
ocs-sr -g auto -e1 auto -e2 -r -j2 -icds -k1 -p poweroff restoredisk schule-laptop sda
|
||||
```
|
||||
- `-g auto` - Geometrie automatisch
|
||||
- `-e1 auto -e2` - MBR/Partitionstabelle wiederherstellen
|
||||
- `-r` - Partitionsgrößen anpassen
|
||||
- `-icds` - Bestätigung überspringen
|
||||
- `-k1` - Partitionstabelle der Zielfestplatte erstellen
|
||||
- `-p poweroff` - Nach Abschluss herunterfahren
|
||||
## Voraussetzung: Clonezilla-Live-Dateien im Image
|
||||
|
||||
## Weitere Boot-Optionen
|
||||
`/boot/clonezilla/` braucht einmalig `vmlinuz`, `initrd.img` und
|
||||
`filesystem.squashfs` vom Clonezilla-Stick (Ordner `/live/`). Sie sind zu gross
|
||||
fuer git und kommen ueber das Master-Image auf alle Laptops. Fehlen sie, meldet
|
||||
der Pull-Lauf einen Hinweis im Journal.
|
||||
|
||||
- **Clonezilla manuell** - Alle Optionen, für Experten
|
||||
- **Von Festplatte starten** - Normaler Boot
|
||||
- **Erweiterte Optionen:**
|
||||
- Image aufspielen (in RAM) - USB kann nach Start entfernt werden
|
||||
- Failsafe-Modus - Bei Boot-Problemen
|
||||
- Memtest - RAM-Test
|
||||
## Problemloesungen
|
||||
|
||||
## Problemlösungen
|
||||
- **„Mount failed“ / Platte nicht gefunden:** Label pruefen:
|
||||
`sudo ntfslabel /dev/sdX1 DEZNTRSICHERUNG`
|
||||
- **Kein Image gefunden:** Liegt ein Ordner `schule-laptop-*` auf der Platte?
|
||||
- **Laptop bootet nach Reimage nicht:** Stick benutzen (Weg 3) — der Stick ist
|
||||
die Rettungsleine und funktioniert immer
|
||||
|
||||
### "Mount failed" für externe Festplatte
|
||||
- Prüfen ob Festplatte das Label "DEZNTRSICHERUNG" hat
|
||||
- Festplatte neu formatieren und Label setzen:
|
||||
```bash
|
||||
sudo ntfslabel /dev/sdX1 DEZNTRSICHERUNG
|
||||
```
|
||||
## Zeiten (12x gleiche Hardware, SSD + USB 3.0)
|
||||
|
||||
### Image existiert nicht (beim Aufspielen)
|
||||
- Erst "IMAGE ERSTELLEN" auf dem Master-Laptop ausführen
|
||||
- Prüfen ob Ordner `schule-laptop` auf der externen Festplatte existiert
|
||||
|
||||
### Falsches Device (nicht sda)
|
||||
- Manuellen Modus verwenden und Device anpassen
|
||||
- Oder Konfiguration auf USB-Stick anpassen:
|
||||
- BIOS: `/syslinux/syslinux.cfg`
|
||||
- UEFI: `/boot/grub/grub.cfg`
|
||||
|
||||
## Zeiten (geschätzt)
|
||||
|
||||
| Aktion | SSD + USB 3.0 | HDD + USB 2.0 |
|
||||
|--------|---------------|---------------|
|
||||
| Image erstellen | ~10-15 Min | ~30-45 Min |
|
||||
| Image aufspielen | ~5-10 Min | ~20-30 Min |
|
||||
| Aktion | Dauer |
|
||||
|---|---|
|
||||
| Image erstellen | ~10–15 Min |
|
||||
| Image aufspielen | ~5–10 Min |
|
||||
|
||||
Reference in New Issue
Block a user