Proxmox Mises à jour automatiques des VM (qm + vzdump) avec tests réseau et restauration automatique

Dans cet article, je présente un script simple (mais très efficace) pour automatiser les mises à jour des machines virtuelles sur Proxmox VE. Le script peut :

  • créer une sauvegarde de la VM (optionnel),
  • démarrer la VM si elle était arrêtée au départ,
  • effectuer une mise à niveau complète via apt et redémarrer la VM,
  • lancer des tests réseau avant et après la mise à jour,
  • restaurer automatiquement depuis la sauvegarde en cas de problème (optionnel),
  • éteindre la VM à la fin si elle était initialement arrêtée.

Où télécharger le script

Vous pouvez télécharger le script directement depuis mon site :

soban.pl/bash/upgrade_proxmox_qm.sh

Dossiers requis

Avant de lancer l’automatisation, créez deux dossiers : un pour les scripts et un pour les logs :

Installer le script

Téléchargez le script dans /root/automate_scripts/ et rendez-le exécutable :

Comment ça marche (version courte)

  • D’abord, une sauvegarde est créée (vzdump snapshot + zstd) si l’option est activée.
  • Si la VM était en état stopped, le script la démarre et attend WAIT_TIME secondes.
  • Ensuite, le script exécute des tests réseau AVANT la mise à jour :
  • Le script exécute apt update/upgrade/dist-upgrade/autoremove/clean puis redémarre la VM (reboot).
  • Après le redémarrage, il attend à nouveau (WAIT_TIME) et relance les tests APRÈS la mise à jour.
  • Si les tests échouent et qu’une sauvegarde est disponible, la VM est restaurée automatiquement via qmrestore.
  • Enfin, la VM est arrêtée si elle était initialement arrêtée.

Lancer le script manuellement

Le script attend exactement deux arguments :

  • VMID – l’ID de la VM dans Proxmox
  • TIME_SEC – le temps d’attente après démarrage/redémarrage (en secondes)

Astuce : adaptez WAIT_TIME au temps réel de démarrage de la VM et à la durée de la mise à jour. En pratique, 300 à 1000 secondes fonctionnent très bien selon la VM.

Script complet (référence)

Ci-dessous, le script complet (code et commentaires restent en anglais) :

Cron (planning hebdomadaire + logs séparés par VM)

Voici un exemple de crontab : une VM différente est mise à jour chaque jour de la semaine, et les logs sont enregistrés dans des fichiers séparés sous /root/logs/.

Modifier le crontab root :

Collez les règles ci-dessous (les commentaires restent en anglais) :

Vérifications rapides / Dépannage

  • Assurez-vous que root peut se connecter en SSH depuis l’hôte Proxmox vers la VM (le script utilise ssh root@<vm-hostname>).
  • Vérifiez que DNS (ou /etc/hosts) résout correctement le hostname de la VM sur l’hôte Proxmox.
  • Si apt demande des confirmations, configurez des mises à niveau non interactives ou bloquez les paquets problématiques.

Voilà ! Déposez le script dans /root/automate_scripts/, envoyez les journaux dans /root/logs/, et la maintenance hebdomadaire de votre machine virtuelle devient quasiment automatique.

Dell WD19/WD19S : mise à jour du firmware sur Proxmox/Debian sans timeouts USB (fwupd + correctif autosuspend)


Si vous essayez de mettre à jour le firmware d’une station d’accueil Dell WD19/WD19S sur Proxmox (ou Debian) via fwupdmgr, vous pouvez tomber sur l’erreur classique Operation timed out pendant l’étape Erasing…. En pratique, la mise à jour échoue à cause de la gestion d’énergie USB (autosuspend). Ci-dessous, vous trouverez un correctif simple et efficace, ainsi qu’un script prêt à l’emploi à lancer sur un serveur ou un ordinateur portable.

Symptômes

Le plus souvent, pendant la mise à jour du firmware du dock (WD19/WD19S), vous verrez une erreur similaire à :

À ce stade, fwupdmgr peut afficher le périphérique WD19S en Update State: Failed ou continuer à indiquer pending activation, mais le flash ne se termine jamais complètement.

Pourquoi cela arrive-t-il ?

Pendant le flash, le dock effectue des opérations longues. Si le système tente d’économiser de l’énergie sur l’USB (autosuspend), les transferts de contrôle USB peuvent échouer. Résultat : un timeout exactement lors de l’effacement de la banque de firmware (erase bank).

Correctif rapide : désactiver l’autosuspend USB pendant la mise à jour

La solution la plus simple consiste à définir temporairement l’autosuspend à -1 (désactivé). Ce paramètre reste actif jusqu’au redémarrage (sauf si vous le rendez permanent via la cmdline du noyau), mais cela suffit largement le temps de la mise à jour.

Ensuite, lancez la mise à jour :

Après la mise à jour : “pending activation” et nécessité de débrancher le câble

Après une installation réussie du firmware pour WD19/WD19S, fwupdmgr affiche souvent le message suivant :

Procédez dans cet ordre précis :

  • Débranchez le câble USB-C du dock (côté ordinateur).
  • (Optionnel) Débranchez l’alimentation du dock pendant 10–15 secondes, puis rebranchez-la.
  • Rebranchez le câble USB-C.
  • Lancez l’activation :

Enfin, vérifiez le statut :

Script prêt à l’emploi : installation + mise à jour + désactivation autosuspend (avec restauration)

Ci-dessous, un script prêt à l’emploi qui :

  • installe fwupd
  • rafraîchit les métadonnées LVFS
  • désactive temporairement l’autosuspend USB (pour éviter les timeouts sur WD19S)
  • lance les mises à jour du firmware
  • restaure ensuite la valeur précédente d’autosuspend (même en cas d’échec)

Vous pouvez copier le script directement depuis cet article, mais si vous préférez aller plus vite, vous pouvez le télécharger ici :

https://soban.pl/bash/dell_updage.sh

Exemple de téléchargement et d’exécution :

Si vous voulez prévisualiser le script avant de l’exécuter :

Si less n’est pas installé :

Script (contenu complet)

Exécuter le script

Le plus simple :

FAQ & conseils

  • La mise à jour échoue encore ? Débranchez tous les périphériques du dock (écrans/LAN/USB), ne laissez que l’alimentation et l’USB-C, faites un hard reset (débranchez l’alimentation 30s), puis réessayez.
  • “pending activation” après la mise à jour – c’est normal pour WD19/WD19S. Vous devez débrancher l’USB-C, rebrancher, puis exécuter fwupdmgr activate.
  • Est-ce que ça met à jour le BIOS du laptop ? Pas forcément. fwupdmgr liste séparément “System Firmware” (BIOS/UEFI) et le dock. Cet article se concentre sur le dock et le problème de timeout USB.

Résumé

Si la mise à jour du firmware Dell WD19/WD19S échoue sur Proxmox/Debian pendant l’étape Erasing…, il suffit dans la plupart des cas de désactiver temporairement l’autosuspend USB. Le script ci-dessus le fait automatiquement, puis restaure le réglage précédent afin que le système continue de fonctionner normalement.