Proxmox Automatische VM-Updates (qm + vzdump) mit Netzwerktests und Auto-Wiederherstellung

Proxmox: Automatische VM-Updates (qm + vzdump) mit Netzwerktests und Auto-Wiederherstellung

In diesem Artikel zeige ich ein einfaches (aber sehr effektives) Skript zur Automatisierung von Updates für virtuelle Maschinen in Proxmox VE. Das Skript kann:

  • ein Backup der VM erstellen (optional),
  • die VM starten, falls sie vorher ausgeschaltet war,
  • ein vollständiges System-Upgrade über apt durchführen und neu starten,
  • Netzwerktests vor und nach dem Update ausführen,
  • bei Problemen automatisch aus dem Backup wiederherstellen (optional),
  • am Ende die VM wieder herunterfahren, wenn sie ursprünglich gestoppt war.

Woher bekommt man das Skript?

Du kannst das Skript direkt von meiner Webseite herunterladen:

soban.pl/bash/upgrade_proxmox_qm.sh

Benötigte Ordner

Bevor du die Automatisierung startest, erstelle zwei Ordner: einen für Skripte und einen für Logs:

Skript installieren

Lade das Skript nach /root/automate_scripts/ herunter und mache es ausführbar:

Wie funktioniert es? (kurz erklärt)

  • Zuerst wird ein Backup (vzdump snapshot + zstd) erstellt – wenn Backups aktiviert sind.
  • Wenn die VM den Status stopped hatte, startet das Skript sie und wartet WAIT_TIME Sekunden.
  • Danach werden Netzwerktests VOR dem Update ausgeführt:
  • Das Skript führt apt update/upgrade/dist-upgrade/autoremove/clean aus und startet am Ende die VM neu (reboot).
  • Nach dem Neustart wartet es erneut (WAIT_TIME) und führt die gleichen Tests NACH dem Update aus.
  • Wenn die Tests fehlschlagen und ein Backup vorhanden ist, wird automatisch qmrestore ausgeführt.
  • Am Ende fährt es die VM (optional) wieder herunter, wenn sie ursprünglich gestoppt war.

Manueller Start

Das Skript erwartet genau zwei Argumente:

  • VMID – die VM-ID in Proxmox
  • TIME_SEC – Wartezeit nach Start/Reboot (in Sekunden)

Tipp: Wähle WAIT_TIME passend zur realen Bootzeit der VM und der Dauer des Updates. In der Praxis sind 300 bis 1000 Sekunden meistens sinnvoll (je nach VM).

Vollständiges Skript (zum Einfügen / Nachschlagen)

Unten findest du das komplette Skript in der gleichen Form, wie es in dieser Automatisierung verwendet wird:

Cron (wöchentlicher Zeitplan + separate Logs pro VM)

Unten ist ein Beispiel für crontab: Updates laufen einmal pro Woche (jeden Wochentag eine andere VM), und Logs werden in separate Dateien unter /root/logs/ geschrieben.

Bearbeite root crontab:

Füge folgende Regeln ein (Kommentare bleiben auf Englisch):

Schnelle Checks / Troubleshooting

  • Stelle sicher, dass root vom Proxmox-Host per SSH zur VM verbinden kann (das Skript nutzt ssh root@<vm-hostname>).
  • Prüfe, ob DNS (oder /etc/hosts) den VM-Hostname auf dem Proxmox-Host korrekt auflöst.
  • Wenn apt nach Bestätigungen fragt, stelle sicher, dass die VM non-interactive Upgrades unterstützt oder halte problematische Pakete zurück.

Das war’s. Legen Sie das Skript in /root/automate_scripts/ ab, senden Sie die Protokolle nach /root/logs/, und Ihre wöchentliche VM-Wartung wird größtenteils zu einer Routineaufgabe.