
Vous avez créé une VM depuis une cloud-image (Debian, Ubuntu), coché l'option QEMU Guest Agent, et pourtant Proxmox affiche « Guest Agent not running » et aucune IP dans l'onglet Summary. C'est le grand classique : les cloud-images n'embarquent pas l'agent, et l'option côté VM ne suffit pas. Ce guide explique les trois pièces du puzzle et les trois méthodes pour installer l'agent, avec la plus fiable (cloud-init) testée sur PVE 9. Pour qui automatise des VMs cloud-init.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Pourquoi « Guest Agent not running » malgré l'option cochée.
- Installer l'agent proprement via cloud-init (snippet).
- Les alternatives (virt-customize, post-boot) et leurs pièges.
- Vérifier que l'agent répond et que l'IP remonte.
À quoi sert l'agent
Section intitulée « À quoi sert l'agent »Le qemu-guest-agent est un petit démon dans l'invité qui donne à Proxmox trois services :
- Remonter l'IP dans l'onglet Summary (sans lui, le réseau marche, mais l'IP ne s'affiche pas côté hyperviseur) ;
- arrêt propre de la VM (
qm shutdownpasse par l'agent au lieu d'un ACPI brutal) ; - sauvegardes cohérentes : Proxmox gèle le système de fichiers (
fsfreeze) le temps du snapshot.
Le vrai problème : trois pièces, pas une
Section intitulée « Le vrai problème : trois pièces, pas une »L'erreur la plus fréquente est de croire qu'une action suffit. Il en faut trois, réparties des deux côtés.
| Étape | Où | Commande | Si oubliée |
|---|---|---|---|
| Activer le canal | côté VM | qm set <vmid> --agent enabled=1 | l'agent ne peut pas communiquer |
| Installer le paquet | côté invité | apt install qemu-guest-agent | le canal n'écoute rien |
| Activer le service | côté invité | systemctl enable --now qemu-guest-agent | l'agent est là mais inactif |
Les cloud-images n'ont pas le paquet : c'est l'étape 2 (et 3) qui manque presque toujours.
Méthode 1 : cloud-init (la plus fiable)
Section intitulée « Méthode 1 : cloud-init (la plus fiable) »Pour une VM cloud-init, on demande à cloud-init d'installer et d'activer l'agent au premier boot, via un snippet. Le stockage doit accepter le contenu snippets (sur local, dans /var/lib/vz/snippets/).
-
Créer le snippet
/var/lib/vz/snippets/qemu-agent.yaml:#cloud-configpackages:- qemu-guest-agentruncmd:- systemctl enable --now qemu-guest-agent -
Attacher le snippet à la VM avec
vendor=(surtout pasuser=) :Fenêtre de terminal qm set <vmid> --cicustom "vendor=local:snippets/qemu-agent.yaml"
Sur le lab, la preuve que cela fonctionne, une fois la VM démarrée :
qm agent <vmid> ping# (aucune erreur = l'agent répond)qm agent <vmid> network-get-interfaces# ... "ip-address": "192.168.10.238" ... -> l'IP remonteMéthode 2 : virt-customize (attention au piège)
Section intitulée « Méthode 2 : virt-customize (attention au piège) »On peut aussi injecter l'agent dans l'image avant de créer la VM :
apt install -y libguestfs-toolsvirt-customize -a debian-13-genericcloud-amd64.qcow2 \ --install qemu-guest-agent \ --run-command 'systemctl enable qemu-guest-agent' \ --truncate /etc/machine-idLe --truncate /etc/machine-id évite que tous les clones héritent du même machine-id (et donc de la même IP DHCP).
Méthode 3 : dans la VM déjà démarrée
Section intitulée « Méthode 3 : dans la VM déjà démarrée »Le plus direct quand la VM tourne déjà et qu'on peut s'y connecter :
apt update && apt install -y qemu-guest-agentsystemctl enable --now qemu-guest-agentActiver le canal et redémarrer à froid
Section intitulée « Activer le canal et redémarrer à froid »Quelle que soit la méthode, il faut activer le canal côté Proxmox et redémarrer à froid.
qm set <vmid> --agent enabled=1qm stop <vmid> && qm start <vmid>Vérifier de bout en bout
Section intitulée « Vérifier de bout en bout »# depuis l'hôte Proxmoxqm agent <vmid> ping # pas d'erreur = communication OKqm agent <vmid> network-get-interfaces # l'IP doit apparaître
# dans l'invitéls -l /dev/virtio-ports/org.qemu.guest_agent.0 # le device existesystemctl is-active qemu-guest-agent # activeLa preuve complète : qm agent ping ne renvoie aucune erreur et l'IP apparaît dans l'onglet Summary de l'interface.
Pièges courants
Section intitulée « Pièges courants »| Symptôme | Cause | Solution |
|---|---|---|
| « Guest Agent not running » persistant | option cochée mais paquet absent | installer qemu-guest-agent dans l'invité |
| Toujours rien après install | pas de cold reboot | qm stop puis qm start |
| virt-customize « réussit » mais agent absent | pas de DNS dans l'appliance | dhcpcd-base sur l'hôte PVE 9 |
systemctl ne trouve rien | on cherche qemu-ga | l'unité est qemu-guest-agent, le process qemu-ga |
| Clones avec la même IP | machine-id identique | --truncate /etc/machine-id à l'image |
À retenir
Section intitulée « À retenir »- Trois pièces : activer le canal (
--agent enabled=1), installer le paquet, activer le service. L'option seule ne suffit pas. - Pour une cloud-image, la méthode fiable est cloud-init avec un snippet
vendor=(packages: qemu-guest-agent). - virt-customize échoue silencieusement sans DNS : installez
dhcpcd-basesur l'hôte PVE 9 et vérifiez. - Après
--agent enabled=1, faites un cold reboot (stop/start), pas un reboot interne. - Preuve :
qm agent pingsans erreur et l'IP dans l'onglet Summary.
FAQ : questions fréquentes sur le qemu-guest-agent Proxmox
Section intitulée « FAQ : questions fréquentes sur le qemu-guest-agent Proxmox »Trois pièces, pas une
Cocher l'option n'active que le canal côté VM ; les cloud-images n'incluent pas le paquet. Il faut les trois :| Étape | Où |
|---|---|
qm set <vmid> --agent enabled=1 |
côté VM |
apt install qemu-guest-agent |
côté invité |
systemctl enable --now qemu-guest-agent |
côté invité |
Un snippet cloud-init
#cloud-config
packages:
- qemu-guest-agent
runcmd:
- systemctl enable --now qemu-guest-agent
qm set <vmid> --cicustom "vendor=local:snippets/qemu-agent.yaml"
On utilise vendor= (pas user=) pour ne pas écraser la config cloud-init générée par Proxmox (utilisateur, clés SSH). C'est la méthode la plus fiable pour les cloud-images.Oui, un cold reboot
L'option--agent enabled=1 ajoute un port virtio-serial (du matériel virtuel), qui n'apparaît qu'au démarrage complet du process QEMU :qm stop <vmid> && qm start <vmid>
Un reboot interne à l'invité ne recrée pas ce device : c'est l'erreur n°1. Vérifiez la présence de /dev/virtio-ports/org.qemu.guest_agent.0 dans l'invité.Pas de DNS dans l'appliance
virt-customize affiche « Finishing off » comme si tout allait bien, mais le paquet est absent : l'appliance libguestfs n'a pas de DNS, donc l'apt install échoue en silence.Sur PVE 9, le correctif :apt install dhcpcd-base # sur l'HÔTE Proxmox
Puis relancez virt-customize et vérifiez que le paquet est là (ne vous fiez pas au « Finishing off »).qm agent ping + IP
# depuis l'hôte
qm agent <vmid> ping # aucune erreur = OK
qm agent <vmid> network-get-interfaces # l'IP remonte
# dans l'invité
ls -l /dev/virtio-ports/org.qemu.guest_agent.0
systemctl is-active qemu-guest-agent # active
La preuve complète : qm agent ping sans erreur et l'IP affichée dans l'onglet Summary de l'interface Proxmox.