Proxmox : automatiser l’affichage de l’OS d’une VM dans les notes

Un petit mémo sur comment automatiser l’affichage de l’OS d’une VM dans la partie note de Proxmox.

Par défaut, l’interface graphique n’affiche pas cette information : on y retrouve le nom de la VM, son ID, ses ressources, mais pas le système invité. Heureusement, il est possible de récupérer et d’afficher la version de l’OS grâce au QEMU Guest Agent.

Pourquoi le QEMU Guest Agent ?

Le QEMU Guest Agent est un petit service installé à l’intérieur de la VM qui permet à l’hyperviseur d’interagir avec l’OS invité. Il fournit de nombreuses informations : adresse IP, nom d’hôte, utilisateurs connectés, et surtout… la version du système d’exploitation.

Une fois activé, on peut interroger le Guest Agent depuis Proxmox avec la commande :

qm guest cmd ID_VM get-osinfo
  • Exemple de résultat pour une Debian 12 :
  • {
      "id": "debian",
      "name": "Debian GNU/Linux",
      "pretty-name": "Debian GNU/Linux 12 (bookworm)",
      "version": "12 (bookworm)",
      "version-id": "12"
    }
    
  • Ou pour une Ubuntu 24.04 :
  • {
      "id": "ubuntu",
      "name": "Ubuntu",
      "pretty-name": "Ubuntu 24.04 LTS",
      "version": "24.04 (Noble Numbat)",
      "version-id": "24.04"
    }
    

Étape 1 : Installer et activer le Guest Agent dans la VM

  • Sur Debian/Ubuntu :
  • apt install qemu-guest-agent
    systemctl enable --now qemu-guest-agent
    
  • Puis, dans l’interface Proxmox :
    • Aller dans Options → Agent invité QEMU
    • Activer l’option

Étape 2 : Récupérer automatiquement l’OS et l’afficher dans les notes

Comme Proxmox n’affiche pas directement cette information dans la liste des VMs, on peut utiliser un script pour interroger chaque VM et mettre à jour ses notes avec le nom de l’OS détecté.

  • Le script Bash :
    • Créer le fichier /usr/local/bin/update-vm-os-notes.sh :
    • #!/bin/bash
      export LANG=C.UTF-8
      export LC_ALL=C.UTF-8
      
      # Lister toutes les VMs KVM (pas les containers LXC)
      for vmid in $(qm list | awk 'NR>1 {print $1}'); do
          echo "🔍 VMID: $vmid"
      
          # Vérifier si l'agent invité est activé
          agent_enabled=$(qm config $vmid | grep agent: | awk '{print $2}')
          if [[ "$agent_enabled" != "1" ]]; then
              echo "   ⚠️ Agent invité désactivé, on passe."
              continue
          fi
      
          # Récupérer infos OS via QEMU Guest Agent
          osinfo=$(qm guest cmd $vmid get-osinfo 2>/dev/null)
      
          if [[ -z "$osinfo" ]]; then
              echo "   ❌ Impossible de récupérer l'OS."
              continue
          fi
      
          # Extraire nom "pretty-name"
          os_name=$(echo "$osinfo" | jq -r '."pretty-name" // .name')
      
          echo "   ✅ OS détecté: $os_name"
          echo "   ➡️ Mise à jour des notes de la VM..."
      
          # Mettre à jour les notes (remplace le contenu existant)
          pvesh set /nodes/$(hostname)/qemu/$vmid/config -description "OS détecté: $os_name"
      done
      
    • Rendre le script exécutable :
    • chmod +x /usr/local/bin/update-vm-os-notes.sh
    • Avant exécution du script, installer le paquet jq :
    • apt install jq
    • Exécution du scripte :
    • /usr/local/bin/update-vm-os-notes.sh
  • Résultat :
    • Après exécution du script, chaque VM disposera d’une note dans Proxmox indiquant clairement son système d’exploitation. Par exemple :

Conclusion

Même si Proxmox n’affiche pas nativement la version de l’OS des machines virtuelles dans son interface, l’utilisation du QEMU Guest Agent combinée à un petit script Bash permet d’enrichir la gestion des VMs. En un coup d’œil, il est possible de connaître le système qui tourne dans chaque VM, sans avoir besoin de se connecter à celle-ci.

Ressource

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.