Proxmox Automatyczne aktualizacje VM (qm + vzdump) z testami sieci i auto-przywracaniem

Proxmox: Automatyczne aktualizacje VM (qm + vzdump) z testami sieci i auto-przywracaniem

W tym artykule opisuję prosty (ale bardzo skuteczny) skrypt automatyzujący aktualizacje maszyn wirtualnych na Proxmox VE. Skrypt potrafi:

  • utworzyć backup maszyny (opcjonalnie),
  • uruchomić VM, jeśli wcześniej była wyłączona,
  • zrobić pełny upgrade systemu przez apt i wykonać reboot,
  • zrobić testy sieciowe przed i po aktualizacji,
  • w razie problemów automatycznie przywrócić VM z backupu (opcjonalnie),
  • na końcu wyłączyć VM, jeśli wcześniej była wyłączona.

Skąd pobrać skrypt

Skrypt możesz pobrać bezpośrednio z mojej strony:

soban.pl/bash/upgrade_proxmox_qm.sh

Wymagane katalogi

Zanim uruchomisz automatyzację, utwórz dwa katalogi: jeden na skrypty i jeden na logi:

Instalacja skryptu

Pobierz skrypt do /root/automate_scripts/ i nadaj mu prawa wykonywania:

Jak to działa (w skrócie)

  • Najpierw wykonywany jest backup (vzdump snapshot + zstd) – jeśli backup jest włączony.
  • Jeśli VM była stopped, skrypt ją uruchamia i czeka WAIT_TIME sekund.
  • Następnie wykonywane są testy sieciowe PRZED aktualizacją:
  • Skrypt wykonuje apt update/upgrade/dist-upgrade/autoremove/clean i na końcu robi reboot VM.
  • Po reboocie czeka ponownie (WAIT_TIME) i uruchamia te same testy PO aktualizacji.
  • Jeśli testy nie przejdą i istnieje backup, skrypt wykonuje qmrestore automatycznie.
  • Na końcu (opcjonalnie) wyłącza VM, jeśli wcześniej była wyłączona.

Uruchomienie (manualnie)

Skrypt przyjmuje dokładnie dwa argumenty:

  • VMID – ID maszyny wirtualnej na Proxmox
  • TIME_SEC – czas oczekiwania po starcie/reboocie (w sekundach)

Wskazówka: dobierz WAIT_TIME do realnego czasu bootowania VM oraz czasu trwania aktualizacji. Najczęściej sprawdza się 300 do 1000 sekund (zależnie od maszyny).

Pełny skrypt (do wklejenia / podglądu)

Poniżej wrzucam całość w jednym miejscu – dokładnie w takiej formie, w jakiej jest używana w tej automatyzacji:

Cron (harmonogram tygodniowy + osobne logi per VM)

Poniżej masz przykład crontaba, który uruchamia aktualizacje raz w tygodniu (inna VM każdego dnia roboczego) i zapisuje logi do osobnych plików w /root/logs/.

Edytuj crona roota:

Wklej reguły (komentarze są po angielsku):

Szybkie checklisty / troubleshooting

  • Upewnij się, że root z hosta Proxmox może łączyć się po SSH do VM po hostname (skrypt używa ssh root@<vm-hostname>).
  • Sprawdź czy DNS (albo /etc/hosts) poprawnie rozwiązuje hostname VM na hoście Proxmox.
  • Jeśli apt potrafi pytać o potwierdzenia, zadbaj o tryb non-interactive albo „trzymaj” pakiety, które robią problemy podczas upgrade.

To wszystko. Umieść skrypt w /root/automate_scripts/, wyślij logi do /root/logs/, a cotygodniowa konserwacja maszyny wirtualnej stanie się praktycznie niezauważalna.