fix(boot-medium): jq/curl/python3 im Zielsystem vor postinstall.sh sicherstellen
Fuenfter und letzter live gefundener Bug auf dem Weg zum ersten vollstaendig erfolgreichen End-to-End-Deployment: die echte Mint-Referenz-VM bringt jq nicht mit (anders als das Boot-Medium selbst, das hilft dem chroot-Zielsystem aber nicht - komplett eigener Kontext). postinstall.sh scheiterte deshalb an "jq: command not found". curl/python3 gleich mit abgesichert (python3 wird vom heruntergeladenen agent.py nach dem naechsten Boot gebraucht), um nicht noch einen ganzen Referenz-VM-Neupack-Zyklus wegen eines weiteren fehlenden Pakets zu riskieren. apt-get update noetig, da package_golden_image.sh /var/lib/apt/lists als Teil der Bereinigung leert. Damit lief der komplette Self-Service-Flow zum ersten Mal vollstaendig durch: Enrollment-Session -> personalisiertes ISO -> Boot -> Partition/ Format/Mount -> Golden-Image-Stream-Download+Extraktion -> chroot-Fixup -> Bootloader -> Postinstall/Agent-Bootstrap -> Reboot -> echter Linux-Mint-Cinnamon-Login-Bildschirm (Hostname "debian", deutsches Tastaturlayout aktiv). agent_secret_issued_at in der Datenbank bestaetigt die erfolgreiche Agent-Registrierung bei anode. Damit sind alle vier Phasen des Boot-Medium-Plans live end-to-end verifiziert. Voraussetzung dafuer: das golden-image-Archiv auf anode wurde mit dem korrigierten package_golden_image.sh (vorheriger Commit) neu gepackt (4,8 GB statt 2,3 GB, jetzt mit den vorher fehlenden Kernelmodulen) und live ersetzt - alte Version als linux-mint-22.3-cinnamon.tar.zst.defekt-31.08.bak gesichert.
This commit is contained in:
parent
27d6fa0f47
commit
b9ccae6e85
@ -270,6 +270,31 @@ backend_postinstall() {
|
||||
printf '%s' "${postinstall_rendered}" > "${TARGET_DIR}/tmp/postinstall.sh"
|
||||
chmod 0700 "${TARGET_DIR}/tmp/postinstall.sh"
|
||||
|
||||
# Live gefunden (31.08.2026, erster vollstaendig durchgelaufener
|
||||
# End-to-End-Test): postinstall.sh braucht jq (+curl), aber die echte
|
||||
# Mint-Referenz-VM bringt das nicht zwingend mit (anders als das
|
||||
# Boot-Medium selbst, das jq ja schon vorinstalliert hat - das hilft
|
||||
# dem ausgerollten Zielsystem hier nichts, das ist ein komplett
|
||||
# eigener chroot). python3 wird nicht von postinstall.sh selbst
|
||||
# gebraucht, aber vom heruntergeladenen agent.py nach dem naechsten
|
||||
# Boot - hier gleich mit absichern, um nicht noch einen ganzen
|
||||
# Referenz-VM-Neupack-Zyklus wegen eines einzelnen fehlenden Pakets zu
|
||||
# brauchen. package_golden_image.sh leert ausserdem /var/lib/apt/lists
|
||||
# als Teil der Bereinigung - "apt-get update" ist deshalb hier noetig,
|
||||
# bevor "apt-get install" ueberhaupt Pakete finden kann. Netzwerk ist
|
||||
# im chroot verfuegbar (resolv.conf wurde schon in
|
||||
# image_deploy_bind_mounts kopiert, dieselben Bind-Mounts sind noch
|
||||
# aktiv).
|
||||
chroot "${TARGET_DIR}" bash -c '
|
||||
missing=()
|
||||
command -v jq >/dev/null 2>&1 || missing+=(jq)
|
||||
command -v curl >/dev/null 2>&1 || missing+=(curl)
|
||||
command -v python3 >/dev/null 2>&1 || missing+=(python3)
|
||||
[[ "${#missing[@]}" -eq 0 ]] && exit 0
|
||||
apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y "${missing[@]}"
|
||||
' ||
|
||||
{ backend_fatal "jq/curl/python3 konnten im Zielsystem nicht sichergestellt werden."; return 1; }
|
||||
|
||||
backend_log "Führe Postinstall-Skript im chroot aus."
|
||||
chroot "${TARGET_DIR}" /bin/bash /tmp/postinstall.sh ||
|
||||
{ backend_fatal "Postinstall-Skript ist im chroot fehlgeschlagen."; return 1; }
|
||||
|
||||
@ -270,6 +270,31 @@ backend_postinstall() {
|
||||
printf '%s' "${postinstall_rendered}" > "${TARGET_DIR}/tmp/postinstall.sh"
|
||||
chmod 0700 "${TARGET_DIR}/tmp/postinstall.sh"
|
||||
|
||||
# Live gefunden (31.08.2026, erster vollstaendig durchgelaufener
|
||||
# End-to-End-Test): postinstall.sh braucht jq (+curl), aber die echte
|
||||
# Mint-Referenz-VM bringt das nicht zwingend mit (anders als das
|
||||
# Boot-Medium selbst, das jq ja schon vorinstalliert hat - das hilft
|
||||
# dem ausgerollten Zielsystem hier nichts, das ist ein komplett
|
||||
# eigener chroot). python3 wird nicht von postinstall.sh selbst
|
||||
# gebraucht, aber vom heruntergeladenen agent.py nach dem naechsten
|
||||
# Boot - hier gleich mit absichern, um nicht noch einen ganzen
|
||||
# Referenz-VM-Neupack-Zyklus wegen eines einzelnen fehlenden Pakets zu
|
||||
# brauchen. package_golden_image.sh leert ausserdem /var/lib/apt/lists
|
||||
# als Teil der Bereinigung - "apt-get update" ist deshalb hier noetig,
|
||||
# bevor "apt-get install" ueberhaupt Pakete finden kann. Netzwerk ist
|
||||
# im chroot verfuegbar (resolv.conf wurde schon in
|
||||
# image_deploy_bind_mounts kopiert, dieselben Bind-Mounts sind noch
|
||||
# aktiv).
|
||||
chroot "${TARGET_DIR}" bash -c '
|
||||
missing=()
|
||||
command -v jq >/dev/null 2>&1 || missing+=(jq)
|
||||
command -v curl >/dev/null 2>&1 || missing+=(curl)
|
||||
command -v python3 >/dev/null 2>&1 || missing+=(python3)
|
||||
[[ "${#missing[@]}" -eq 0 ]] && exit 0
|
||||
apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y "${missing[@]}"
|
||||
' ||
|
||||
{ backend_fatal "jq/curl/python3 konnten im Zielsystem nicht sichergestellt werden."; return 1; }
|
||||
|
||||
backend_log "Führe Postinstall-Skript im chroot aus."
|
||||
chroot "${TARGET_DIR}" /bin/bash /tmp/postinstall.sh ||
|
||||
{ backend_fatal "Postinstall-Skript ist im chroot fehlgeschlagen."; return 1; }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user