scripts/ (installer.sh, lib/*, modules/00-99) und backends/mint-image/ (inkl. echtem postinstall.sh statt Symlink auf backends/mint/) werden ueber config/includes.chroot/opt/tuxflotte/ ins Image kopiert - bewusst nur die zur Laufzeit benoetigten Dateien, nicht die Build-Host-Werkzeuge (build_customer_iso.sh, build_golden_image.sh, package_golden_image.sh, lib/initrd.sh etc. bleiben aussen vor). 00_preflight.sh und backend_init() (backends/mint-image/backend.sh) verlieren ihre Laufzeit-apt-get-Nachinstallation (jq, parted, dosfstools, e2fsprogs, zstd, btrfs-progs, gettext-base, curl) - alles bereits in Phase 0 vorinstalliert. Werden durch reine Assertions ersetzt, die frueh und klar melden, falls die Paketliste doch mal luecken sollte. backends/mint/postinstall.sh nach backends/mint-image/postinstall.sh als echte Datei verschoben (war Symlink) - noetig, weil backends/mint/ in Phase 4 komplett entfernt wird. Live verifiziert in der enterprise-QEMU-VM: installer.sh von Hand gestartet, Module 00/05/10/12/15/17 liefen sauber durch, inkl. echtem Server-Kontakt zu anode und echter Geraeteregistrierung (Liebherr-Org), Commit-Gate erschien interaktiv wie erwartet, kontrollierter Abbruch ohne jede destruktive Aktion.
41 lines
864 B
Bash
41 lines
864 B
Bash
#!/usr/bin/env bash
|
|
|
|
load_config() {
|
|
local config_file="$1"
|
|
|
|
if [[ -f "$config_file" ]]; then
|
|
# shellcheck disable=SC1090
|
|
source "$config_file"
|
|
log_info "Konfiguration geladen: $config_file"
|
|
else
|
|
log_warn "Keine Konfiguration gefunden: $config_file"
|
|
fi
|
|
}
|
|
|
|
run_module() {
|
|
local module="$1"
|
|
local mode="${2:-normal}"
|
|
|
|
[[ -f "$module" ]] || error_exit "Modul nicht gefunden: $module"
|
|
|
|
log_info "Starte Modul: $(basename "$module")"
|
|
|
|
if [[ "${DRY_RUN:-false}" == true && "$mode" != "always" ]]; then
|
|
log_warn "Dry-Run: Modul übersprungen: $module"
|
|
return 0
|
|
fi
|
|
|
|
# shellcheck disable=SC1090
|
|
"$module"
|
|
|
|
log_success "Modul abgeschlossen: $(basename "$module")"
|
|
}
|
|
|
|
require_root() {
|
|
[[ "$EUID" -eq 0 ]] || error_exit "Installer muss als root ausgeführt werden."
|
|
}
|
|
|
|
command_exists() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|