Aller au contenu
Virtualisation medium

Proxmox : installer le qemu-guest-agent dans une VM cloud-init

8 min de lecture

Logo Proxmox

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.

  • 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.

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 shutdown passe 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.

L'erreur la plus fréquente est de croire qu'une action suffit. Il en faut trois, réparties des deux côtés.

ÉtapeCommandeSi oubliée
Activer le canalcôté VMqm set <vmid> --agent enabled=1l'agent ne peut pas communiquer
Installer le paquetcôté invitéapt install qemu-guest-agentle canal n'écoute rien
Activer le servicecôté invitésystemctl enable --now qemu-guest-agentl'agent est là mais inactif

Les cloud-images n'ont pas le paquet : c'est l'étape 2 (et 3) qui manque presque toujours.

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/).

  1. Créer le snippet /var/lib/vz/snippets/qemu-agent.yaml :

    #cloud-config
    packages:
    - qemu-guest-agent
    runcmd:
    - systemctl enable --now qemu-guest-agent
  2. Attacher le snippet à la VM avec vendor= (surtout pas user=) :

    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 :

Fenêtre de terminal
qm agent <vmid> ping
# (aucune erreur = l'agent répond)
qm agent <vmid> network-get-interfaces
# ... "ip-address": "192.168.10.238" ... -> l'IP remonte

On peut aussi injecter l'agent dans l'image avant de créer la VM :

Fenêtre de terminal
apt install -y libguestfs-tools
virt-customize -a debian-13-genericcloud-amd64.qcow2 \
--install qemu-guest-agent \
--run-command 'systemctl enable qemu-guest-agent' \
--truncate /etc/machine-id

Le --truncate /etc/machine-id évite que tous les clones héritent du même machine-id (et donc de la même IP DHCP).

Le plus direct quand la VM tourne déjà et qu'on peut s'y connecter :

Fenêtre de terminal
apt update && apt install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent

Quelle que soit la méthode, il faut activer le canal côté Proxmox et redémarrer à froid.

Fenêtre de terminal
qm set <vmid> --agent enabled=1
qm stop <vmid> && qm start <vmid>
Fenêtre de terminal
# depuis l'hôte Proxmox
qm agent <vmid> ping # pas d'erreur = communication OK
qm 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 existe
systemctl is-active qemu-guest-agent # active

La preuve complète : qm agent ping ne renvoie aucune erreur et l'IP apparaît dans l'onglet Summary de l'interface.

SymptômeCauseSolution
« Guest Agent not running » persistantoption cochée mais paquet absentinstaller qemu-guest-agent dans l'invité
Toujours rien après installpas de cold rebootqm stop puis qm start
virt-customize « réussit » mais agent absentpas de DNS dans l'appliancedhcpcd-base sur l'hôte PVE 9
systemctl ne trouve rienon cherche qemu-gal'unité est qemu-guest-agent, le process qemu-ga
Clones avec la même IPmachine-id identique--truncate /etc/machine-id à l'image
  • 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-base sur 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 ping sans 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 »

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn