Gordon Zimm f902854ed1 Seed: /srv bekommt den gesamten Rest, keine Reserve in der VG
Die VHDX ist dynamisch und jederzeit erweiterbar; ungenutzte Extents sparen auf
dem Host nichts. Aus 80%FREE wird 100%FREE.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-24 14:02:22 +02:00

86 lines
5.2 KiB
Markdown
Raw 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.

# Autoinstall-Seed für die EspoCRM-Kunden-VM
`user-data` und `meta-data` bilden eine NoCloud-Quelle. Das Verzeichnis ist öffentlich abrufbar – es enthält deshalb
**keine Geheimnisse** (kein benutzbares Passwort, kein RMM-Token; siehe [ADR 0004](../docs/decisions/0004-bootstrap-der-kunden-vm.md)).
## Ablageort
**Für den Testbetrieb (Entscheidung 22.09.2026, Variante 1):** Der Seed liegt zusätzlich in
`gordon.zimm/ubuntu-autoinstall` unter `espocrm/`, weil der Installer ohne Anmeldung abruft und die Organisation
`espoCRM` anonym nicht lesbar ist. Boot-Zeile:
```
autoinstall ds=nocloud-net\;s=https://gitea.subcura.net/EspoCRM_Public/espo-deploy/raw/branch/main/autoinstall/
```
**Dieses Verzeichnis ist die Quelle.** Änderungen hier vornehmen und anschließend nach `ubuntu-autoinstall/espocrm/`
kopieren (`user-data`, `meta-data`). Der endgültige Ablageort bleibt offen → O-26.
## Hintergrund zur Wahl (O-26)
Der Installer ruft die Dateien **ohne Anmeldung** ab. Dieses Repo liegt in der Organisation `espoCRM`, die nicht öffentlich
sichtbar ist: Ein anonymer Abruf von
`https://gitea.subcura.net/espoCRM/espo-fleet-ops/raw/branch/main/autoinstall/user-data` liefert **404**, obwohl das Repo
selbst als „nicht privat“ geführt wird (geprüft am 22.09.2026; dasselbe gilt für `espoCRM/espo-dev`).
Anonym erreichbar ist dagegen `gordon.zimm/ubuntu-autoinstall`.
Solange das nicht entschieden ist, kommt der Seed dort hin, wo er abrufbar ist. Kandidaten:
| Variante | Boot-Zeile | Bemerkung |
|---|---|---|
| Unterverzeichnis im bestehenden öffentlichen Repo | `autoinstall ds=nocloud-net\;s=https://gitea.subcura.net/EspoCRM_Public/espo-deploy/raw/branch/main/autoinstall/` | schnellster Weg, stört den bestehenden Seed im Wurzelverzeichnis nicht |
| eigenes öffentliches Repo, z. B. `gordon.zimm/espo-autoinstall` | `… ds=nocloud-net\;s=…/gordon.zimm/espo-autoinstall/raw/branch/main/` | klar abgegrenzt, ein Zweck |
| Organisation `espoCRM` auf „öffentlich“ stellen | `… ds=nocloud-net\;s=…/espoCRM/espo-fleet-ops/raw/branch/main/autoinstall/` | macht auch `espoCRM/espo-dev` für jeden lesbar – nicht empfohlen |
| Seed auf der Installationsmedium-Seite (zweites CIDATA-Image) | keine URL nötig | für die Flotte die sauberste Lösung, in Phase 3 zu prüfen |
### Das Semikolon muss maskiert werden
In der GRUB-Kommandozeile trennt `;` zwei GRUB-Befehle. Unmaskiert bekommt der Kernel nur `autoinstall ds=nocloud-net`,
die Seed-URL fällt weg – der Installer startet dann ganz normal interaktiv. Deshalb **`\;`** schreiben (so steht es auch
in der README von `ubuntu-autoinstall`). Gleichwertig: die ganze Angabe in Anführungszeichen setzen,
`autoinstall "ds=nocloud-net;s=https://…/espocrm/"`.
Nach dem Booten der Ubuntu-Server-24.04-ISO im GRUB-Menü `e` drücken, die gewählte Zeile vor `---` einfügen, Strg+X.
Die Installation läuft ohne Rückfragen durch und **schaltet die VM am Ende aus**. Vor dem nächsten Start das ISO trennen,
sonst startet die Installation erneut.
## Nach dem ersten Start (einmal je VM)
Die Schritte liegen auch als `/root/ERSTINBETRIEBNAHME.txt` auf der VM:
1. An der Hyper-V-Konsole anmelden. Das **Initialpasswort** steht über dem Login-Prompt (`/etc/issue`); der Wechsel wird
erzwungen. Neues Passwort im Secure Information Store der Site hinterlegen.
2. RMM-Agent installieren – Token aus *Endpoints → Devices → Manage → Download Agent*:
```bash
cd /tmp && curl -fsSLOJ "<Download-Link aus dem Portal>" && chmod +x *_ITSPlatform_TKN*.run && sudo ./*_ITSPlatform_TKN*.run; rm -f *_ITSPlatform_TKN*.run
```
`-O -J` behält den vom Server vorgegebenen Dateinamen samt `_TKN<uuid>` – daraus liest der Installer den Token.
Das abschließende `rm` hängt an `;`, damit die Datei mit dem Token auch nach einem Abbruch verschwindet.
Der Token steckt im Dateinamen; der Installer liest ihn aus seiner eigenen Aufrufzeile. Wird die Datei umbenannt
(`-o name.run`) oder nur mit `-O` geladen (dann heißt sie `setup`), fehlt der Token und muss gesetzt werden:
`sudo env TOKEN=<uuid> ./datei.run`.
Prüfen: `systemctl status ITSPlatform` und `tail /var/log/ITSPlatform-install.log`; das Gerät erscheint nach
wenigen Minuten in der Site. Einzelheiten zur Token-Übergabe:
[../docs/quellen/connectwise-rmm-notizen.md](../docs/quellen/connectwise-rmm-notizen.md)
3. Hinweiszeile mit dem Initialpasswort aus `/etc/issue` entfernen.
4. Prüfen, dass das Gerät binnen weniger Minuten in der richtigen Site erscheint.
## Was der Seed einrichtet
| Bereich | Wert |
|---|---|
| Sprache/Tastatur/Zeitzone | de_DE.UTF-8, de, Europe/Berlin |
| Netz | erste Ethernet-Schnittstelle (`match: e*`), DHCPv4, kein DHCPv6 |
| Konto | `administrator`, Passwort je VM zufällig, Wechsel beim ersten Anmelden erzwungen |
| SSH | Server installiert, Passwortanmeldung erlaubt ([ADR 0003](../docs/decisions/0003-zugangsmodell-ssh.md)) |
| Pakete | `linux-cloud-tools-virtual` (Hyper-V-Integrationsdienste), `curl`, `bzip2` |
| Platten | `/` 20 GiB, swap 4 GiB, `/var/lib/docker` 20 GiB, `/srv` der gesamte Rest (keine Reserve in der VG) |
| Zum Schluss | vollständiges `apt full-upgrade`, `autoremove`, `clean`, dann `poweroff` |
Hintergrund zur Aufteilung: [plattenlayout-erlaeuterung.md](../docs/entwuerfe/plattenlayout-erlaeuterung.md).