User-Wunsch 25.09.: Speicherpool im Wächter (gelb ab 80 %, rot bei 10 % frei) samt Empfehlungen, dazu das NAS (Backup-Ziel, per NFS auf dem Proxmox-Host). - Ausführer: Thin-Pools mit echter Belegung je Volume (lvs), ungenutzte und verwaiste Platten, VM-Belegung über den Gast-Agenten, Discard je VM, Netzlaufwerke (df mit Zeitlimit, hängender harter NFS-Mount hält nichts auf), Sicherungsaufträge und jüngste Sicherung je Gast. - Homelab-Teil: services/homelab/speicher.py (Auswertung, Empfehlungen, Wächter pruefe_speicher, NAS-Erreichbarkeit per TCP), GET /api/homelab/speicher; Gast-Plattenwächter nennt jetzt auch VMs richtig. - Oberfläche: Karte „Speicher und Sicherungen“ im Homelab-Cockpit. - deploy.sh und ausfuehrer-einrichten.sh warten, solange im Homelab ein Update oder „Alle aktualisieren“ läuft (der Neustart bräche den Lauf ab). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
37 lines
2.3 KiB
Bash
37 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
# ausfuehrer-einrichten.sh — den Ausführer auf dem Proxmox-Host einrichten (Phase 3/4).
|
|
#
|
|
# Läuft am PC (Git-Bash, im Repo). Legt ausfuehrer.py, die Unit und die Konfiguration auf den
|
|
# Proxmox-Host und startet den Dienst. Das gemeinsame Geheimnis wandert vom Container des Homelab-Teils
|
|
# per Pipe direkt auf den Host (0600) — es steht in keiner Befehlszeile.
|
|
#
|
|
# Nutzung: bash deploy/homelab/ausfuehrer-einrichten.sh <ip-des-containers> [--nur-lesen]
|
|
# --nur-lesen: nur der Bericht, jeder andere Auftrag wird abgelehnt (umschalten in
|
|
# /etc/mc2-ausfuehrer.json, "nur_lesen": false, dann systemctl restart mc2-ausfuehrer).
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/../.."
|
|
IP="${1:?Nutzung: ausfuehrer-einrichten.sh <ip-des-containers> [--nur-lesen]}"
|
|
NUR_LESEN=false
|
|
[ "${2:-}" = "--nur-lesen" ] && NUR_LESEN=true
|
|
PVE="${MC_PVE:-pve}"
|
|
|
|
# Nicht mitten in ein Update: Der Neustart des Ausführers bräche einen laufenden Auftrag ab (apt in einem Gast!).
|
|
if [ "${MC_TROTZDEM:-0}" != "1" ] && curl -sf -m 5 "http://$IP:9001/api/homelab/laeufe" \
|
|
"http://$IP:9001/api/homelab/sammellauf" 2>/dev/null | grep -q '"status": *"laeuft"'; then
|
|
echo "Im Homelab läuft gerade ein Update — Ausführer später einrichten (oder MC_TROTZDEM=1)." >&2
|
|
exit 1
|
|
fi
|
|
|
|
ssh -o BatchMode=yes "$PVE" "install -d -m 755 /usr/local/lib/mc2"
|
|
ssh -o BatchMode=yes "$PVE" "cat > /usr/local/lib/mc2/ausfuehrer.py && chmod 755 /usr/local/lib/mc2/ausfuehrer.py" \
|
|
< deploy/homelab/ausfuehrer.py
|
|
ssh -o BatchMode=yes "$PVE" "cat > /etc/systemd/system/mc2-ausfuehrer.service" < deploy/homelab/mc2-ausfuehrer.service
|
|
# shellcheck disable=SC2029 # $IP soll hier (am PC) eingesetzt werden
|
|
ssh -o BatchMode=yes "root@$IP" "cat /var/lib/mc2/ausfuehrer.token" \
|
|
| ssh -o BatchMode=yes "$PVE" "umask 077; read -r t; [ -n \"\$t\" ] || exit 1; \
|
|
printf '{\"server\": \"http://%s:9001\", \"token\": \"%s\", \"node\": \"%s\", \"nur_lesen\": %s}\n' '$IP' \"\$t\" \"\$(hostname)\" '$NUR_LESEN' \
|
|
> /etc/mc2-ausfuehrer.json"
|
|
ssh -o BatchMode=yes "$PVE" "systemctl daemon-reload && systemctl enable --now mc2-ausfuehrer.service \
|
|
&& systemctl restart mc2-ausfuehrer.service && sleep 5 && systemctl is-active mc2-ausfuehrer.service"
|
|
echo "✅ Ausführer läuft. Der erste Bericht erscheint in etwa einer Minute unter /api/homelab/ziele."
|