From e2b940a3af46ecf6ce6fc89c186f1b7cf1c70df5 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Wed, 29 Jul 2026 12:23:05 +0000 Subject: [PATCH] =?UTF-8?q?[FIX]=20qemu:=20user-data=20invalide=20(YAML)?= =?UTF-8?q?=20cassait=20cloud-init=20->=20VM=20fig=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La ligne runcmd Fedora commençait par « - [ -f … ] » : en YAML, « - [ » démarre une SÉQUENCE EN FLUX, donc « [ -f … ] && sed … » rendait tout le user-data invalide. cloud-init rejetait alors la config ENTIÈRE : aucun utilisateur créé, pas de SSH, login console erplibre/erplibre impossible, VM « en attente de démarrage ». - « test -f … && … » au lieu de « [ -f … ] && … » (ne démarre pas de séquence YAML). - timeout 300 sur l'installation de qemu-guest-agent : un miroir lent ne bloque plus cloud-init. - Validé : le user-data se parse en YAML (tous les runcmd sont des chaînes), avec et sans mot de passe. Les VM déjà déployées avec le mauvais seed doivent être redéployées ; les prochaines repartent correctement. Co-Authored-By: Claude Opus 4.8 (1M context) --- script/qemu/deploy_qemu.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/script/qemu/deploy_qemu.py b/script/qemu/deploy_qemu.py index 2cafd02..b4645c4 100755 --- a/script/qemu/deploy_qemu.py +++ b/script/qemu/deploy_qemu.py @@ -974,10 +974,12 @@ def build_cloud_config( # disponible tout de suite, sans attendre le réseau). Tout est # « || true » : si l'installation échoue (réseau lent/absent), le boot # n'est pas bloqué. La plupart des images cloud l'incluent déjà. - " - (command -v apt-get >/dev/null && apt-get install -y" - " qemu-guest-agent) || (command -v dnf >/dev/null && dnf install -y" - " qemu-guest-agent) || (command -v pacman >/dev/null && pacman -S" - " --noconfirm qemu-guest-agent) || true", + # timeout 300 : un miroir lent/absent ne doit JAMAIS bloquer cloud-init + # (sinon la VM reste « en attente de démarrage »). Non fatal (|| true). + " - (command -v apt-get >/dev/null && timeout 300 apt-get install -y" + " qemu-guest-agent) || (command -v dnf >/dev/null && timeout 300 dnf" + " install -y qemu-guest-agent) || (command -v pacman >/dev/null &&" + " timeout 300 pacman -S --noconfirm qemu-guest-agent) || true", # Autorise guest-exec (bloqué par défaut sur certaines distros). # On VIDE la liste de blocage (block-rpcs/blacklist) plutôt que # d'utiliser allow-rpcs (liste BLANCHE : casserait les autres RPC). @@ -986,7 +988,10 @@ def build_cloud_config( " - mkdir -p /etc/qemu && printf '[general]\\nblock-rpcs=\\n" "blacklist=\\n' > /etc/qemu/qemu-ga.conf || true", # Fedora/RHEL bloquent guest-exec via /etc/sysconfig/qemu-ga. - " - [ -f /etc/sysconfig/qemu-ga ] && sed -i" + # « test -f » et NON « [ -f … ] » : en YAML, « - [ » démarre une + # séquence en flux -> user-data invalide -> cloud-init rejeté (aucun + # utilisateur créé, VM figée, login console impossible). + " - test -f /etc/sysconfig/qemu-ga && sed -i" " 's/^BLACKLIST_RPC=.*/BLACKLIST_RPC=/'" " /etc/sysconfig/qemu-ga || true", " - systemctl enable qemu-guest-agent 2>/dev/null"