Seed legt keine Anleitung mehr auf der VM ab

Der late-command, der /root/ERSTINBETRIEBNAHME.txt erzeugte, ist entfernt
(11 statt 12 late-commands). Auf der VM wird nichts gelesen, und eine
mitgelieferte Anleitung altert dort: ab dem zweiten Kunden stehen auf den
Maschinen verschiedene Staende, die niemand nachzieht.

Die Handgriffe stehen jetzt im Runbook des internen Repositorys
(espo-fleet-ops/docs/runbooks/erstinbetriebnahme-kunden-vm.md); der Seed
nennt es in einer Kommentarzeile, autoinstall/README.md verweist darauf.

Dabei mitgezogen: Abschnitt "Ablageort" nannte noch die Zwischenkopie
gordon.zimm/ubuntu-autoinstall (O-26 ist seit 23.09.2026 entschieden),
und drei Links zeigten auf docs/, das es in diesem Repo nicht gibt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
gordon.zimm 2026-09-25 09:48:00 +02:00
parent a643d64172
commit 75de1540b1
2 changed files with 14 additions and 55 deletions

View File

@ -1,20 +1,19 @@
# 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)).
**keine Geheimnisse** (kein benutzbares Passwort, kein RMM-Token; siehe ADR 0004 im internen Repository `espoCRM/espo-fleet-ops`).
## 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:
**Entschieden am 23.09.2026 (O-26):** Der Installer ruft ohne Anmeldung ab; dieses Repo ist deshalb der
Ablageort des Seeds. 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.
**Dieses Verzeichnis ist die Kopie, die der Installer abruft.** Geändert wird im internen Repository
`espoCRM/espo-fleet-ops` unter `autoinstall/`; `user-data` ist hier byteidentisch.
## Hintergrund zur Wahl (O-26)
@ -46,29 +45,10 @@ 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.
Die Handgriffe von der leeren VM bis zur laufenden Instanz stehen im Runbook des internen Repositorys
`espoCRM/espo-fleet-ops`, Datei `docs/runbooks/erstinbetriebnahme-kunden-vm.md` – Passwortwechsel,
Agent-Installation samt Token-Übergabe, Einstellungen am Gerät, die drei Tasks, Abschlussprüfung.
Der Seed legt dazu **keine Datei auf der VM** ab: gepflegt wird an einer Stelle, nicht auf jeder Maschine.
## Was der Seed einrichtet
@ -77,9 +57,9 @@ Die Schritte liegen auch als `/root/ERSTINBETRIEBNAHME.txt` auf der VM:
| 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)) |
| SSH | Server installiert, Passwortanmeldung erlaubt (ADR 0003) |
| 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 minus 10 GiB; die 10 GiB bleiben in der VG frei als Platz für einen LVM-Snapshot vor einem Update |
| Zum Schluss | vollständiges `apt full-upgrade`, `autoremove`, `clean`, dann `poweroff` |
Hintergrund zur Aufteilung: [plattenlayout-erlaeuterung.md](../docs/entwuerfe/plattenlayout-erlaeuterung.md).
Hintergrund zur Aufteilung: `docs/entwuerfe/plattenlayout-erlaeuterung.md` im internen Repository.

View File

@ -8,6 +8,8 @@
# -> er enthält KEIN Geheimnis: kein benutzbares Passwort, kein RMM-Token.
# * Die ISO richtet nur das Minimum ein. Docker, Härtung, Logrotation, Firewall, Hostname und
# Instanz kommen reproduzierbar über RMM-Tasks ("alles Weitere erfolgt über ConnectWise RMM").
# * Der Seed legt keine Anleitung auf der VM ab. Die Handgriffe nach dem ersten Start stehen im
# Runbook espo-fleet-ops/docs/runbooks/erstinbetriebnahme-kunden-vm.md.
autoinstall:
version: 1
@ -109,30 +111,7 @@ autoinstall:
# 3. Hyper-V-Integrationsdienste (Zeit/IP-Meldung, Dateisystem-Quiesce für Veeam).
# Normalerweise startet udev sie selbst; enable schadet nicht und darf fehlschlagen.
- curtin in-target -- systemctl enable hv-kvp-daemon.service hv-vss-daemon.service || true
# 4. Kurze Anleitung für den einen Handgriff nach dem ersten Start (Passwort + RMM-Agent).
- >-
printf '%s\n'
'# Erstinbetriebnahme dieser VM - Registrierung im RMM von Hand (ADR 0004)'
'#'
'# 1. Initialpasswort steht am Konsolen-Login (/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):'
'# cd /tmp && curl -fsSLOJ "<Download-Link aus dem Portal>" && chmod +x *_ITSPlatform_TKN*.run && sudo ./*_ITSPlatform_TKN*.run; rm -f *_ITSPlatform_TKN*.run'
'# Pruefen: systemctl status ITSPlatform ; tail /var/log/ITSPlatform-install.log'
'# 3. Im RMM am Geraet einstellen, BEVOR ein Task laeuft:'
'# - Company Unique Id der Company gesetzt (liefert den Hostnamen espo-<kuerzel>)'
'# - Geraet der richtigen Site und der Device Group EspoCRM zugeordnet'
'# - Friendly Name setzen (folgt dem Hostnamen nicht von selbst)'
'# - Custom Fields: espo_fqdn, espo_ring (0 intern, 1 Pilotkunde, 2 Produktivkunde), espo_zustand = NEU'
'# 4. Tasks in dieser Reihenfolge von Hand starten:'
'# ESPO-01-Grundeinrichtung -> Hostname, SSH-Haertung, Journal, Zeitzone'
'# ESPO-02-Docker -> Docker in gepinnter Version, Logrotation, DOCKER-USER'
'# ESPO-03-First-Deploy -> Geheimnisse, Compose aus dem Ring, EspoCRM starten'
'# ESPO-01 entfernt die Zeile mit dem Initialpasswort aus /etc/issue selbst.'
'# 5. Nach ESPO-03: Admin-Passwort in EspoCRM aendern (admin/admin) und im Safe ablegen.'
'# ERST DANACH DNS-Eintrag und Portfreigabe an der OPNsense setzen.'
> /target/root/ERSTINBETRIEBNAHME.txt
# 5. Zum Schluss alles auf den neuesten Stand bringen. `updates: all` deckt den Stand zu Beginn der
# 4. Zum Schluss alles auf den neuesten Stand bringen. `updates: all` deckt den Stand zu Beginn der
# Installation ab; dieser Durchgang holt, was währenddessen dazugekommen ist, und räumt auf.
# NEEDRESTART_SUSPEND verhindert Dienst-Neustarts im chroot.
- curtin in-target -- sh -c 'DEBIAN_FRONTEND=noninteractive NEEDRESTART_SUSPEND=1 apt-get update'