Proxmox VM Reset automatisieren – So geht’s

In Schulungs- und Laborumgebungen ist es oft notwendig, virtuelle Maschinen in einem bekannten Zustand zu starten. Mit einem Bash-Skript können Sie den Proxmox VM Reset automatisieren, um VMs schnell und zuverlässig auf einen früheren Zustand zurückzusetzen.

Warum ist eine automatisierte VM-Rücksetzung wichtig?

Gerade in Schulungen oder Testumgebungen ist es entscheidend, dass alle VMs stets in einem identischen Ausgangszustand sind. So lassen sich fehlerhafte Konfigurationen und Abweichungen vermeiden. Manuelles Zurücksetzen ist zeitaufwendig und fehleranfällig. Durch Automatisierung können Sie wertvolle Ressourcen sparen und die Zuverlässigkeit erhöhen.

Voraussetzungen für das Skript

Um dieses Skript verwenden zu können, benötigen Sie:

  1. Proxmox als Virtualisierungsplattform.
  2. VMs, die auf Snapshots basieren.
  3. Zugriff auf die Proxmox-Befehlszeile.

Im Folgenden erklären wir Schritt für Schritt, wie das Skript funktioniert und wie Sie es in Ihre Umgebung integrieren können.

Bash-Skript für den automatisierten VM-Reset in Proxmox

Das Bash-Skript durchsucht alle VMs mit einem bestimmten Namensmuster, findet Snapshots und setzt die Maschinen auf diese zurück. Dabei wird sichergestellt, dass nur VMs mit gültigen Snapshots verarbeitet werden. Sollte ein Fehler auftreten, wird dieser in einer Fehlerprotokolldatei (errorlog.txt) festgehalten.

Das Skript im Detail:

#!/bin/bash

echo "#####################"
echo "### Start Skript ###"
echo "#####################"

# Leeren der errorlog.txt Datei
> ./errorlog.txt

# VM-Namensmuster definieren
vm_name="VM_PC*"
echo "Name der VMs $vm_name korrekt?"

# Fehler-Tracking-Variable
error_occurred=false

# VM-IDs ermitteln und speichern
/usr/sbin/qm list | grep "$vm_name" | awk '{print $1}' > ./vmids.txt

# Überprüfen, ob VMs gefunden wurden
if [ ! -s ./vmids.txt ]; then
echo "Keine VMs gefunden, die dem Muster '$vm_name' entsprechen."
echo "Keine VMs gefunden, die dem Muster '$vm_name' entsprechen." >> ./errorlog.txt
exit 1
fi

# VM-IDs auslesen und für jede VM Snapshots verarbeiten
vms=$(cat ./vmids.txt)
for vmid in $vms; do
# Neuesten Snapshot ermitteln
snapname=$(/usr/sbin/qm listsnapshot $vmid 2>/dev/null | awk '/->/ {print $2}' | tail -n 2 | head -n 1)

# Überprüfen, ob ein Snapshot vorhanden ist
if [ -z "$snapname" ]; then
echo "Keine Snapshots für VM $vmid gefunden."
echo "$(date '+%Y-%m-%d %H:%M:%S') - Keine Snapshots für VM $vmid gefunden." >> ./errorlog.txt
error_occurred=true
continue
fi

# Snapshot zurücksetzen
/usr/sbin/qm rollback $vmid $snapname 2>&1 >/dev/null

echo "VM $vmid erfolgreich auf den Snapshot $snapname zurückgesetzt."
done

# Statusmeldung ausgeben
if [ "$error_occurred" = false ]; then
echo "STATUS OK"
else
echo "STATUS: Fehler gefunden, siehe errorlog.txt"
fi

# Leeren der VM-ID-Datei
> ./vmids.txt

Schritt-für-Schritt Anleitung

Namensmuster festlegen:
Das Skript sucht nach VMs, deren Name dem Muster „VM_PC*“ entspricht. Passen Sie diesen Parameter je nach Ihrer Umgebung an.

Fehlerprotokollierung:
Alle Fehler, die während der Ausführung auftreten, werden in der Datei errorlog.txt protokolliert. Diese Datei ermöglicht eine einfache Nachverfolgung von Problemen.

Snapshots identifizieren und zurücksetzen:
Das Skript ermittelt für jede VM den neuesten Snapshot (sofern vorhanden) und setzt die Maschine darauf zurück.

Automatisierung mit Cronjobs

Damit das Skript regelmäßig ausgeführt wird, können Sie einen Cronjob einrichten. Ein Beispiel für einen Cronjob, der das Skript täglich um 3 Uhr morgens ausführt, sieht folgendermaßen aus:

0 3 * * * /pfad/zu/ihrem/skript.sh

Passen Sie den Pfad zu Ihrem Skript und die gewünschte Zeit entsprechend an.

Vorteile der Automatisierung

Zeitersparnis: Manuelles Zurücksetzen von VMs entfällt.

Konsistenz: Jede Sitzung startet mit identischen Bedingungen.

Fehlerminimierung: Automatisierung reduziert die Wahrscheinlichkeit von menschlichen Fehlern.

Einfache Wiederherstellung: Im Falle eines Fehlers wird die VM auf einen funktionsfähigen Zustand zurückgesetzt.

Fazit

Die Automatisierung des Zurücksetzens von VMs in Proxmox bringt erhebliche Vorteile in Schulungs- und Testumgebungen. Mit dem vorgestellten Bash-Skript können Sie sicherstellen, dass Ihre VMs stets in einem definierten Zustand starten, was für eine konsistente und effiziente Arbeitsumgebung sorgt.

Wenn Sie Hilfe bei der Administration ihrer Proxmox Umgebung benötigen, stehen wir Ihnen gerne zur Verfügung. Unsere Experten können Ihre individuellen Anforderungen besprechen und eine maßgeschneiderte Lösung für Sie entwickeln. Kontaktieren Sie uns unverbindlich, um mehr zu erfahren. Unsere Kontaktdaten finden Sie hier.

Weitere spannende Themen und Blogbeiträge finden sie hier.