Proxmox: Automatische Snapshots einrichten

Für die Bereitstellung von virtuellen Maschinen setze ich noch immer auf die von mir bevorzugte Virtualisierungslösung Proxmox VE. Während die automatische Erstellung von Backups bereits über das Web-Interface eingerichtet werden kann, ist das für Auto-Snapshots noch nicht implementiert. Ein Forenbeitrag im offiziellen Forum erweckt auch nicht den Eindruck, dass diese Funktionalität (derzeit) geplant ist.

Die Empfehlung, auch von den Proxmox Entwicklern, ist, dafür einen Cronjob einzurichten. Für die Art, wie ein Snapshot für die VMs getriggert wird, gibt es allerdings verschiedene Herangehensweisen:

  1. Nutzung eines Scripts, welches direkt „qm snapshot“ auf der Shell für jede VM aufruft, oder
  2. die Nutzung der offiziellen Proxmox API

Für die erste Variante bin ich auf das Script pve-autosnap gestoßen, auch die frühere Version von eve4pve-autosnap setzt auf diese Methode. Letzteres wird allerdings nicht mehr weiterentwickelt. Der Entwickler setzt nun auf die offizielle Proxmox API, wendet also die zweitere Variante an, und hat das Tool in cv4pve-autosnap umbenannt.

Als Grund gibt der Entwickler an:

The old bash version inside Proxmox VE is no longer supported because the Proxmox VE developers continue to change output.

 

Das macht meiner Meinung nach auch Sinn und ist die bessere Lösung, weshalb ich bei meinen Setups ebenfalls auf die zweite Variante setze und cv4pve-autosnap dafür verwende. Diese Variante ermöglicht es auch, die Snapshots auf mehreren Proxmox Knoten von extern zu triggern. Ich beziehe mich nachfolgend allerdings auf die Verwendung auf einem einzelnen Host. Für wen die „extern“-Variante interessant sein sollte, wirft am besten einmal einen Blick in die Readme-Datei des Projekts auf Github.

cv4pve-autosnap einrichten

Der Entwickler stellt die aktuellste Variante bereits für verschiedene Betriebssysteme compiliert zur Verfügung. So kann das Tool selbst auf Windows und macOS ausgeführt werden, um die Snapshots von extern zu starten. Für die Verwendung auf dem Proxmox Knoten selbst, verwende ich die Version „cv4pve-autosnap-linux-x64“. Alternativ kann das Tool natürlich auch selbst compiliert werden, der Source Code steht schließlich bereit. 😉

Zunächst wird die aktuellste Version heruntergeladen:

wget https://github.com/Corsinvest/cv4pve-autosnap/releases/latest/download/cv4pve-autosnap-linux-x64.zip

Anschließend entpackt:

unzip cv4pve-autosnap-linux-x64.zip

Das Tool ausführbar gemacht:

chmod +x cv4pve-autosnap

Danach kann das Tool noch an einen Ort eurer Wahl verschoben werden, bei mir landet händisch bereitgestelltes in /usr/local/bin/.

mv cv4pve-autosnap /usr/local/bin/

Da das Tool über die API einen Snapshot triggert, wird noch ein User benötigt, der die erforderlichen Rechte (VM.Audit + VM.Snapshot) besitzt und keine TFA-Authentifizierung aktiviert hat. Ich habe dafür einen neuen User „snapshot“ erstellt, eine Rolle angelegt und ihm die erforderlichen Rechte auf alle VMs eingeräumt.

Für die Erstellung eines täglichen Snapshots von allen VMs unter Beibehalt der letzten sechs Snapshots, würde die Syntax so aussehen und muss natürlich noch mit den eigenen Anmeldedaten gefüttert werden.

/usr/local/bin/cv4pve-autosnap --host=127.0.0.1 --username=snapshot@pve --password='PASSWORD' --vmid=all snap --label='daily' --keep=6

Das ganze einmal aufgerufen, sollte eine Ausgabe wie folgt ergeben:

ACTION Snap 
VMs:   all  
Label: daily 
Keep:  6 
State: False
----- VM 100 -----
Create snapshot: autodaily191104191947
----- VM 101 -----
Create snapshot: autodaily191104191948

Durch die Verwendung von verschiedenen Labels können beispielsweise auch mehrere tägliche, wöchentliche und monatliche Snapshots aufbewahrt werden:

/usr/local/bin/cv4pve-autosnap --host=127.0.0.1 --username=snapshot@pve --password='PASSWORD' --vmid=all snap --label='daily' --keep=6
/usr/local/bin/cv4pve-autosnap --host=127.0.0.1 --username=snapshot@pve --password='PASSWORD' --vmid=all snap --label='weekly' --keep=4
/usr/local/bin/cv4pve-autosnap --host=127.0.0.1 --username=snapshot@pve --password='PASSWORD' --vmid=all snap --label='monthly' --keep=2

Das Script läuft übrigens auch wunderbar als normaler User und bedarf nicht unbedingt der Ausführung als Root-Benutzer. 😉

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.