virt-sysprep — préparer une image Linux au clonage¶
Résumé
virt-sysprep prépare une image de machine virtuelle Linux pour le clonage en supprimant les éléments propres à une instance : clés SSH, machine-id, caches, journaux, fichiers temporaires et autres traces locales.
| Propriété | Valeur |
|---|---|
| Difficulté | Intermédiaire |
| OS / Environnement | Linux / libguestfs / KVM |
| Dernière mise à jour | 2026-04-23 |
Contexte¶
Copier directement une image disque Linux (par exemple un fichier .qcow2) est risqué : le clone récupère exactement la même identité que la machine d'origine.
Cela peut provoquer :
- des conflits réseau ;
- des avertissements SSH ;
- des identifiants système dupliqués ;
- la fuite d'historiques de commandes ou de données temporaires.
virt-sysprep sert précisément à éviter cela. L'outil nettoie une VM existante pour la transformer en modèle prêt à être cloné.
L'intérêt majeur est qu'il fait partie de libguestfs : l'image disque est modifiée directement depuis l'hôte, sans démarrer la machine virtuelle.
Prérequis¶
- Le paquet
virt-sysprep(suitelibguestfs) est installé sur l'hôte. - La VM à préparer est complètement arrêtée.
- Un snapshot ou une sauvegarde de l'image existe avant intervention.
- Vous connaissez soit le nom de la VM dans libvirt, soit le chemin exact de l'image disque.
Règle d'or
N'exécutez jamais virt-sysprep sur une image disque attachée à une VM en cours d'exécution.
Le système de fichiers invité pourrait être corrompu de manière irréversible.
Procédure¶
Étape 1 : arrêter la machine modèle¶
Avant toute opération, vérifier que la VM cible est bien hors tension.
Le statut attendu doit être shut off.
Étape 2 : lancer virt-sysprep¶
Deux approches courantes existent :
Cibler une VM connue de libvirt¶
Cibler directement une image disque¶
Une fois la commande terminée, l'image est "scellée" et prête à être clonée.
Étape 3 : comprendre ce qui est nettoyé¶
Par défaut, virt-sysprep exécute plusieurs opérations de nettoyage sur le système invité.
Les plus importantes sont :
- suppression des clés hôtes SSH dans
/etc/ssh/ssh_host_*; - nettoyage des baux DHCP persistants et des références réseau spécifiques à l'instance ;
- réinitialisation du
machine-id; - vidage des journaux dans
/var/log/; - suppression des historiques utilisateur comme
.bash_history; - nettoyage des caches de gestionnaires de paquets ;
- suppression des fichiers temporaires dans
/tmp/et/var/tmp/; - suppression de l'ancienne graine aléatoire.
Le prochain démarrage du clone régénère alors ses propres éléments d'identité.
Étape 4 : cloner l'image préparée¶
Le cycle d'usage typique est le suivant :
- Créer une VM modèle avec les paquets de base.
- Éteindre la VM.
- Exécuter
virt-sysprep. - Cloner l'image disque autant de fois que nécessaire.
- Démarrer chaque clone comme une machine fraîche et unique.
Aide-mémoire¶
| Commande / Action | Description |
|---|---|
virt-sysprep -d nom_vm |
Nettoie une VM connue de libvirt |
virt-sysprep -a image.qcow2 |
Nettoie directement une image disque |
virt-sysprep --list-operations |
Liste les opérations disponibles |
virt-sysprep --operations ... |
Limite l'exécution à un ensemble précis d'opérations |
Vérification¶
Après le premier démarrage d'un clone, vérifier que l'identité système a bien été régénérée.
Résultat attendu
Le fichier /etc/machine-id n'est plus vide et les clés hôtes SSH présentes sur le clone ont été recréées localement au premier démarrage.
Ressources¶
- Documentation officielle libguestfs — Présentation de la suite d'outils
- Manpage de virt-sysprep — Référence complète des options et opérations