#!/usr/bin/env bash set -euo pipefail log() { printf '[worker-setup] %s\n' "$*" } require_root() { if [[ $EUID -ne 0 ]]; then echo "Bitte als root (oder via sudo) ausführen." >&2 exit 1 fi } install_packages() { log "Aktualisiere Paketquellen …" apt-get update log "Installiere Basis-Python-Umgebung …" apt-get install -y --no-install-recommends \ python3 python3-pip python3-venv log "Installiere Datentransfer-Tools …" apt-get install -y --no-install-recommends \ qemu-utils curl wget python3-boto3 zip unzip tar s3cmd log "Installiere Windows-OS-Morphing-Werkzeuge …" apt-get install -y --no-install-recommends \ ntfs-3g chntpw parted kpartx log "Installiere Linux-OS-Morphing-Werkzeuge …" apt-get install -y --no-install-recommends \ lvm2 dracut log "Bereinige APT-Caches …" apt-get clean } # install_stackit_agent() { # local agent_pkg_url="${STACKIT_AGENT_URL:-}" # if [[ -z $agent_pkg_url ]]; then # log "STACKIT_AGENT_URL nicht gesetzt – überspringe Agent-Installation (bitte manuell nachziehen)." # return # fi # # Der STACKIT Agent ist Voraussetzung für Run-Command v2 – ohne ihn kann der Provider keine Skripte auf der Worker-VM starten. # log "Lade STACKIT Agent von ${agent_pkg_url} …" # local tmpdir # tmpdir=$(mktemp -d) # trap 'rm -rf "$tmpdir"' EXIT # curl -fsSL "$agent_pkg_url" -o "$tmpdir/stackit-agent.deb" # log "Installiere STACKIT Agent …" # apt-get install -y "$tmpdir/stackit-agent.deb" # log "Aktiviere und starte Stackit-Agent-Dienst …" # systemctl enable --now stackit-agent.service # systemctl status stackit-agent.service --no-pager # } configure_cloud_init() { log "Stelle sicher, dass cloud-init aktiviert ist …" systemctl enable cloud-init.service || true systemctl enable cloud-init-local.service || true } main() { require_root install_packages # install_stackit_agent configure_cloud_init log "Worker-VM-Grundkonfiguration abgeschlossen." log "Bitte VM herunterfahren und als Image/Snapshot speichern." } main "$@"