J'ai voulu très récemment essayer Packer ( je reviendrai sur cet outil dans un prochain article) pour générer mes templates d'installation de machine virtuelle VMware.

Mais pour plusieurs raisons, je n'ai pas accès "facilement" à mon serveur ESXi et je n'ai pas forcément de serveurs/machines supplémentaires sous la main pour réaliser quelques tests !

Comment installer et configurer KVM comme hyperviseur de type 1 afin de virtualiser un serveur ESXi sur notre machine.

Mais virtualiser un outil de virtualisation c'est possible ? Et surtout comment ?

Nested Virtualization

La virtualisation imbriquée est une fonctionnalité qui vous permet d’exécuter une machine virtuelle à l’intérieur ... d’une machine virtuelle. Mais pour quoi faire ?

C'est très utile pour tester des configurations qui nécessitent généralement plusieurs hôtes. Par exemple j'utilise fréquemment Vagrant pour générer un nombre important de machines virtuelles pour valider des déploiements de scripts et tout ceci depuis mon "labs" qui se trouve sur un serveur qui utilise KVM !

Les poupées russes

Aujourd'hui nous allons voir comment lancer VMware ESXi 7 depuis ma machine de travail qui utilise déjà KVM pour virtualiser mes VM.

Pré-requis

Alors oui tous les processeurs ne gèrent pas les instructions de virtualisation et qui sont indispensables pour ce type d'installation. Toutefois c'est tout de même le cas de la plupart des processeurs "modernes". Par contre l'option est peut-être désactivée dans votre BIOS.

Vous pouvez valider que votre processeur est compatible ( ou que l'option est bien activée ) avec cpu-checker :

$ sudo apt install cpu-checker
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

Je valide également que ma machine est prête avec virt-host-validate :

$ virt-host-validate
QEMU: Checking for hardware virtualization : PASS
QEMU: Checking for device /dev/kvm : PASS
...

Enfin il est nécessaire d'installer KVM :

$ sudo apt install bridge-utils \
qemu-kvm \
libvirt-clients \
libvirt-daemon-system \
virtinst \
virt-manager 

virt-manager n'est pas indispensable mais il vous fournira un utilitaire graphique pour gérer vos machines virtuelles.

Validons maintenant qu'Ubuntu prend en charge les instructions de nested virtualization :

$ cat /sys/module/kvm_amd/parameters/nested 
1

Si le module n'est pas chargé :

$ sudo modprobe kvm_amd

👉 Bien évidemment si votre processeur est de type intel, remplacez les lignes suivantes avec le module intel : kvm_intel 👈

Enfin je m'assure qu'il sera chargé au démarrage de ma machine :

$ sudo echo 'options kvm_amd nested=1' >> /etc/modprobe.d/qemu-system-x86.conf

Facultatif :

  1. De nombreuses machines virtuelles ont une tendance à "crash" lors des accès MSRS avec KVM. Vous pouvez ajouter la ligne suivante :
sudo echo 'options kvm ignore_msrs=1' /etc/modprobe.d/qemu-system-x86.conf

2. Création d'un bridge pour mon réseau :

Ubuntu 20.04 et KVM : Un bridge “Public”
Comment rendre vos machines virtuelles disponibles sur votre réseau “lan” en quelques minutes !

👉 Sur ce précédent article je supprime le bridge présent par défaut, ce n'est pas obligatoire ( Je laisse d'ailleurs ce bridge sur ma machine actuellement pour certains de mes besoins ) 👈

Créer la machine virtuelle

Pour être honnête, le plus dur est déjà derrière vous ! Il ne nous reste plus qu'à lancer notre machine virtuelle pour installer VMware ESXi 7 :

$ virt-install \
--name esxi7 \
--ram 14336 \
--disk size=20,bus=sata \
--disk size=200,bus=sata \
--cpu host-passthrough \
--vcpus=9 \
--os-type linux \
--os-variant=generic \
--network bridge=br0,model=e1000e \
--graphics spice,listen=0.0.0.0,password=My@Password \
--video qxl \
--cdrom ~/Téléchargements/VMware-VMvisor-Installer-7.0b-16324942.x86_64.iso \
--features kvm_hidden=on \
--machine q35

N'hésitez pas à modifier le nombre de CPU et la mémoire allouée à votre machine virtuelle. J'alloue ici pas mal de ressources :

  • 9 vcpus,
  • 14Go de RAM.

Une fois modifier pour correspondre à vos besoins, lancez la commande.

Une fenêtre doit alors s'ouvrir en vous demandant le mot de passe vnc : My@Password.

Le reste est relativement simple :

VMware ESXi 7 Install

Acceptez la license ( F11 ) :

License EULA VMware
  • Installez la distribution sur le disque de 20Go, le second disque servira de datastore pour les machines virtuelles :
Choose HDD

Pour la suite, passez le tout en Français et saisissez votre mot de passe administrateur pour la machine.

Enfin il vous sera demandé de redémarrer !

Une fois le redémarrage validé, vous pouvez valider le bon fonctionnement de votre installation en créant une première machine virtuelle.

Mais d'abord il sera nécessaire de créer votre "banque de données" :

Nouvelle banque de données

Donnez lui un nom et sélectionnez le disque de 200Go :

Périphérique & Nom

Continuez et validez les modifications sur le disque.

Voila ! Vous allez pouvoir créer votre première machine virtuelle :

Nested Virtualization

Nous avons virtualisé notre installation de VMware ESXi 7 sur notre machine Ubuntu à l'aide de KVM.

Les performances seront bien évidemment en deçà d'une installation plus traditionnelle. Le but ici n'est pas d'utiliser VMware en production, mais bien de réaliser vos tests ( Par exemple déployer des templates avec Packer 😂 ) ou d'essayer la solution si vous n'avez jamais utilisé ESXi.

Cet article est inspiré de l'article suivant ( en anglais ) détaillant l'installation de VMware ESXi 6.7 avec KVM :

L'auteur réalise quelques ajustements sur l'installation de VMware que je n'ai pas eu le temps d'essayer avec la version 7.

N'hésitez pas à permettre au blog de continuer à exister et à fournir un contenu de qualité - enfin je l'espère - au travers de vos dons sur : buymeacoff.ee/lfache
Et n'hésitez pas à m'apporter des remarques ou des commentaires sur Twitter, ou ici 👇