Afin d’augmenter le nombre de machines mises à disposition des étudiants lors de travaux pratiques, j’avais besoin de gérer plusieurs machines virtuelles identiques, de les re-créer rapidement et je voulais permettre à d’autres personnes moins attirées par la sobre beauté d’une commande de 3 lignes d’en faire autant.
En installant CentOS sur les nouvelles machines qui devaient héberger tout ça, j’ai vu le nom de virt-manager…
1. Introduction
La ligne de commande est le moyen le plus simple et efficace pour travailler avec notre OS préféré et la gestion des machines virtuelles ne déroge pas à ce postulat. Cependant certains outils graphiques comme virtualBox séduisent quelques-un d'entre vous (ne niez pas, j'en ai vu). Mais quand vous succombez aux sirènes du clickodrome difficile de s'en échapper sans perdre son travail. Il existe pourtant une bibliothèque qui réunit les avantages des deux sans aucun de leurs inconvénients ! Il s'agit de libvirt avec virt-manager.
Nous ne ferons que survoler quelques-unes des innombrables possibilités offertes par libvirt, les lecteurs anglophones pourront se référer à la documentation et au wiki sur le site officiel [libvirt]http://libvirt.org. Pour les non-anglophones il va falloir attendre un peu...
virt-manager [virt-manager]http://virt-manager.et.redhat.com permet de gérer des machines virtualisées par Xen, QEMU, VMWare, ... et KVM. Dans cet article nous utiliserons KVM que vous avez déjà pu découvrir dans un excellent magazine.
2. Installation
Nous pouvons faire confiance aux gestionnaires de paquets évolués et installer le tout très simplement.
Debian :
|
|
aptitude install virt-manager kvm |
Fedora :
|
|
yum install virt-manager kvm libvirt |
Archlinux :
|
|
pacman -S libvirt urlgrabber qemu-kvm dnsmasq bridge-utils pacman -S virtviewer virtinst virt-manager |
Selon les dépendances à installer, vous allez peut-être prendre un petit café ?
3. La bibliothèque libvirt
La bibliothèque libvirt fournit un démon libvirtd et quelques outils. Libvirt supporte plusieurs méthodes de (para)virtualisation dont Xen, QEMU, KVM, VirtualBox, Vmware et de confinement dont OpenVZ, LXC... Le choix est donc plus étendu que pour virt-manager.
Un peu de vocabulaire (traduit de la documentation de libvirt)Â :
- nœud (node) : machine physique
- hyperviseur (hypervisor)Â : couche logicielle permettant de (para)virtualiser ou confiner des machines
- domaine (domain) : instance d'un OS (ou conteneur) lancé sur une machine virtuelle fournie par un hyperviseur.
Le but de libvirt est donc de fournir un moyen stable de gérer des domaines hébergés par un nœud, que celui-ci soit local ou distant.
Lors de l'installation de la bibliothèque, quelques outils sont installés, voila ceux que j'ai utilisés :
virt-clone permet de cloner un domaine. Cette commande crée une nouvelle machine virtuelle avec un nouvel UUID, de nouvelles adresses MAC pour les interfaces ethernet et bien sûr le nouveau nom que vous lui avez donné. L'image du système est copiée.
virt-install permet de créer un domaine à partir d'une image iso d'installation ou par le réseau.
virsh fournit un shell et un ensemble de commandes permettant de gérer les domaines et les réseaux virtuels.
virt-convert qui convertit une machine virtuelle d'un format (vmx, virt-image et ovf pour l'instant) vers un autre (virt-image et vmx pour l'instant).
virt-viewer qui ouvre une console vnc vers un domaine (local ou distant).
4. L'interface graphique virt-manager
L'interface graphique nous permet de créer, modifier, supprimer et superviser les domaines et les réseaux virtuels. Pour ma part, je l'utilise pour créer le premier domaine d'une série et pour la supervision.
virt-manager s'exécute avec les droits de root.
À la première utilisation, vous devez créer une connexion avec un hyperviseur (au sens libvirt, voir plus haut) par Cette connexion peut être locale ou distante, ce qui explique que la liste des choix qui vous est proposée peut comporter des hyperviseurs qui ne sont pas installés sur votre système mais peut-être sur un hôte distant. Si vous cochez la case " autoconnect ", virt-manager tentera de se connecter au démarrage. Il vous faudra connaître le mot de passe de root de l'hôte auquel vous voulez accéder. Il est nécessaire que le démon libvirtd soit en fonction sur l'hôte distant, virt-manager se chargera de vous le rappeler le cas échéant. N'hésitez pas à lire les détails du message car c'est là que vous trouverez la cause réelle de l'échec.
Fig.1 : Fenêtre principale de virt-manager
Cette fenêtre vous montre l'état des domaines ainsi que leur activité et vous permet de les démarrer, arrêter, regarder.
Fig 2 : Détails d'un domaine
Fig 3Â : Nouveau domaine
Vous pouvez installer l'OS de votre choix (attention cependant, il paraît que certains OS ne soient pas libres et qu'il vous faille obtenir une licence), indiquer le type et la version du système permet à libvirt d'optimiser l'image.
Par défaut les images des disques sont dans /var/lib/libvirt/images.
Comme toujours lorsqu'on utilise une interface graphique, certaines opérations sont compliquées, voire impossibles. Ainsi la modification des réseaux virtuels est impossible (en tous cas je n'ai pas réussi) et la modification d'un certain nombre d'éléments nécessite de les supprimer/recréer.