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" }
{ "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
- 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
- Créer le fichier
- Rendre le script exécutable :
chmod +x /usr/local/bin/update-vm-os-notes.sh
apt install jq
/usr/local/bin/update-vm-os-notes.sh
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.