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