11.2. Création de modèles de machines virtuelles
Pour créer plusieurs clones de machines virtuelles (VM) qui fonctionnent correctement, vous pouvez supprimer les informations et les configurations qui sont propres à une VM source, telles que les clés SSH ou la configuration MAC du réseau persistant. Vous créez ainsi une VM template, que vous pouvez utiliser pour créer facilement et en toute sécurité des clones de VM.
Vous pouvez créer des modèles de VM à l'aide de l'utilitaire virt-sysprep
ou les créer manuellement en fonction de vos besoins.
11.2.1. Création d'un modèle de machine virtuelle à l'aide de virt-sysprep
Pour créer un modèle de clonage à partir d'une machine virtuelle (VM) existante, vous pouvez utiliser l'utilitaire virt-sysprep
. Cet utilitaire supprime certaines configurations susceptibles d'entraîner un fonctionnement incorrect du clone, telles que des paramètres réseau spécifiques ou des métadonnées d'enregistrement du système. Par conséquent, virt-sysprep
rend la création de clones de la VM plus efficace et garantit un fonctionnement plus fiable des clones.
Conditions préalables
Le paquet
guestfs-tools
, qui contient l'utilitairevirt-sysprep
, est installé sur votre hôte :# dnf install guestfs-tools
- La VM source destinée à servir de modèle est arrêtée.
Vous savez où se trouve l'image disque de la VM source et vous êtes le propriétaire du fichier image disque de la VM.
Notez que les images de disque pour les machines virtuelles créées dans la connexion système de libvirt sont situées dans le répertoire
/var/lib/libvirt/images
et appartiennent par défaut à l'utilisateur root :# ls -la /var/lib/libvirt/images -rw-------. 1 root root 9665380352 Jul 23 14:50 a-really-important-vm.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 an-actual-vm-that-i-use.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 totally-not-a-fake-vm.qcow2 -rw-------. 1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
- Optional: Toutes les données importantes se trouvant sur le disque de la VM source ont été sauvegardées. Si vous souhaitez conserver la VM source intacte, clonez-la d'abord et transformez le clone en modèle.
Procédure
Assurez-vous d'être connecté en tant que propriétaire de l'image disque de la VM :
# whoami root
Optional: Copier l'image disque de la VM.
# cp /var/lib/libvirt/images/a-really-important-vm.qcow2 /var/lib/libvirt/images/a-really-important-vm-original.qcow2
Il est utilisé ultérieurement pour vérifier que la VM a bien été transformée en modèle.
Utilisez la commande suivante et remplacez /var/lib/libvirt/images/a-really-important-vm.qcow2 par le chemin d'accès à l'image disque de la VM source.
# virt-sysprep -a /var/lib/libvirt/images/a-really-important-vm.qcow2 [ 0.0] Examining the guest ... [ 7.3] Performing "abrt-data" ... [ 7.3] Performing "backup-files" ... [ 9.6] Performing "bash-history" ... [ 9.6] Performing "blkid-tab" ... [...]
Vérification
Pour confirmer que le processus a réussi, comparez l'image disque modifiée à l'image originale. L'exemple suivant montre la création réussie d'un modèle :
# virt-diff -a /var/lib/libvirt/images/a-really-important-vm-orig.qcow2 -A /var/lib/libvirt/images/a-really-important-vm.qcow2 - - 0644 1001 /etc/group- - - 0000 797 /etc/gshadow- = - 0444 33 /etc/machine-id [...] - - 0600 409 /home/username/.bash_history - d 0700 6 /home/username/.ssh - - 0600 868 /root/.bash_history [...]
Ressources supplémentaires
-
La section OPERATIONS dans la page de manuel
virt-sysprep
- Clonage d'une machine virtuelle à l'aide de l'interface de ligne de commande
11.2.2. Créer manuellement un modèle de machine virtuelle
Pour créer un modèle à partir d'une machine virtuelle (VM) existante, vous pouvez réinitialiser ou déconfigurer manuellement une VM invitée afin de la préparer au clonage.
Conditions préalables
Assurez-vous de connaître l'emplacement de l'image disque de la VM source et d'être le propriétaire du fichier d'image disque de la VM.
Notez que les images de disque pour les machines virtuelles créées dans la connexion système de libvirt sont par défaut situées dans le répertoire
/var/lib/libvirt/images
et appartiennent à l'utilisateur root :# ls -la /var/lib/libvirt/images -rw-------. 1 root root 9665380352 Jul 23 14:50 a-really-important-vm.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 an-actual-vm-that-i-use.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 totally-not-a-fake-vm.qcow2 -rw-------. 1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
- Assurez-vous que la machine virtuelle est arrêtée.
- Optional: Toutes les données importantes présentes sur le disque de la VM ont été sauvegardées. Si vous souhaitez conserver la VM source intacte, clonez-la d'abord et modifiez le clone pour créer un modèle.
Procédure
Configurer la VM pour le clonage :
- Installer les logiciels nécessaires sur le clone.
- Configurez tous les paramètres non uniques pour le système d'exploitation.
- Configurer les paramètres de l'application qui ne sont pas uniques.
Supprimer la configuration du réseau :
Supprimez toutes les règles udev persistantes à l'aide de la commande suivante :
# rm -f /etc/udev/rules.d/70-persistent-net.rules
NoteSi les règles udev ne sont pas supprimées, le nom du premier NIC peut être
eth1
au lieu deeth0
.Supprimer les informations uniques des fichiers
NMConnection
dans le répertoire/etc/NetworkManager/system-connections/
.Supprimez l'adresse MAC, l'adresse IP, le DNS, la passerelle et toute autre information unique ou les paramètres non souhaités.
*ID=ExampleNetwork BOOTPROTO="dhcp" HWADDR="AA:BB:CC:DD:EE:FF" <- REMOVE NM_CONTROLLED="yes" ONBOOT="yes" TYPE="Ethernet" UUID="954bd22c-f96c-4b59-9445-b39dd86ac8ab" <- REMOVE
-
Supprimer les informations similaires de unique et les paramètres non souhaités des fichiers
/etc/hosts
et/etc/resolv.conf
.
Supprimer les détails de l'enregistrement :
Pour les machines virtuelles enregistrées sur le Red Hat Network (RHN) :
# rm /etc/sysconfig/rhn/systemid
Pour les machines virtuelles enregistrées auprès du gestionnaire d'abonnement Red Hat (RHSM) :
Si vous n'avez pas l'intention d'utiliser la VM d'origine :
# subscription-manager unsubscribe --all # subscription-manager unregister # subscription-manager clean
Si vous prévoyez d'utiliser la VM d'origine :
# subscription-manager clean
NoteLe profil RHSM original reste dans le portail avec votre code d'identification. Utilisez la commande suivante pour réactiver votre enregistrement RHSM sur la VM après son clonage :
# subscription-manager register --consumerid=71rd64fx-6216-4409-bf3a-e4b7c7bd8ac9
Supprimer les autres détails uniques :
Supprimer les paires de clés publiques et privées SSH :
# rm -rf /etc/ssh/ssh_host_example
Supprimer la configuration des périphériques LVM :
# rm /etc/lvm/devices/system.devices
- Supprimer tout autre identifiant ou configuration spécifique à l'application qui pourrait entraîner des conflits en cas d'exécution sur plusieurs machines.
Supprimez le fichier
gnome-initial-setup-done
pour configurer la VM afin qu'elle exécute l'assistant de configuration au prochain démarrage :# rm ~/.config/gnome-initial-setup-done
NoteL'assistant qui s'exécute au démarrage suivant dépend des configurations qui ont été supprimées de la VM. En outre, lors du premier démarrage du clone, il est recommandé de modifier le nom d'hôte.