Images

Configuration de l’hyperviseur XEN sous Ubuntu.


Bonjour à tous,

je vous propose ici un petit guide d’utilisation de XEN sur UBUNTU,

Bonne lecture !


1. Configuration de l’hyperviseur sous UBUNTU 

Ici j’utilise la version Focal (20.04.2 LTS).

1.1. Installation de XEN

Je commence par installer XEN, l’outil de création de VM et aussi l’outil qui permet de créer des ponts réseau :

# sudo apt-get install xen-hypervisor-amd64 xen-tools bridge-utils

1.2. Configuration du démarrage de XEN

Je configure 2G de RAM dédié au serveur (appelé ici Domain-0), c’est la peine de mettre trop de RAM car c’est utilisé uniquement pour gérer les machines virtuelles qui vont tourner,
Tout le reste de la RAM sera disponible pour les machines virtuelles :

# sudo vim /etc/default/grub.d/xen.cfg

#Je change cette ligne : 
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=2048M,max:2048M"

#Puis je met à jour GRUB : 
sudo update-grub

#Et reboot le tout : 
#sudo reboot

1.3. Configuration réseau de l’hyperviseur

La configuration réseau est effectuée via NETPLAN (qui remplace le classique /etc/network/interfaces)
voir ici : https://netplan.io/

Pour que XEN fonctionne il faut activer un pont entre les VM et le réseau LAN, par défaut c’est xenbr0, ici je l’appel br0,
Je viens donc ajouter le bloc « br0 », celui ci va prendre la configuration de l’interface eno1 ( équivalent à eth0 avant ), du coup
je passe la configuration d’en0 à br0.

#configuration avec NETPLAN : 
# cat /etc/netplan/00-installer-config.yaml
network:
 version: 2
 ethernets:
    eno1:
     dhcp4: false
     dhcp6: false
 bridges:
    br0:
      interfaces: [eno1]
      addresses: [192.168.1.233/24]
      gateway4: 192.168.1.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no

Une fois en place, j’applique la configuration NETPLAN et je redémarre le tout :

# netplan generate 
# netplan --debug apply


2.1 Création et configuration de la VM LINUX

J’installe ici une machine virtuelle UBUNTU 18 (Bionic), j’aurai pu prendre une DEBIAN, mais c’est plus simple à gérer côté KERNEL LINUX vu qu’on a un fichier KERNEL local disponible sur l’hyperviseur.

Je lance la création de la VM  » vmlinux1  » grâce à cette commande :

# xen-create-image --dist=bionic --hostname vmlinux1 --randommac --netmask=255.255.255.0 --ip=192.168.1.77 --gateway=192.168.1.1 --dir /vmroot/vmlinux1 --size=18G --role=udev

Si vous chercher la liste des distributions disponibles c’est ici :

/usr/share/xen-tools/
artful.d/         common/           etch.d/           fedora-core-17.d/ gentoo.d/         lucid.d/          raring.d/         trusty.d/         zesty.d/
bionic.d/         common.sh         fedora-core-10.d/ fedora-core-4.d/  gutsy.d/          maverick.d/       sarge.d/          unstable.d/
bookworm.d/       cosmic.d/         fedora-core-11.d/ fedora-core-5.d/  hardy.d/          natty.d/          saucy.d/          utopic.d/
bullseye.d/       dapper.d/         fedora-core-12.d/ fedora-core-6.d/  intrepid.d/       oldoldstable.d/   sid.d/            vivid.d/
buster.d/         debian.d/         fedora-core-13.d/ fedora-core-7.d/  jaunty.d/         oldstable.d/      squeeze.d/        wheezy.d/
centos-4.d/       devel.d/          fedora-core-14.d/ fedora-core-8.d/  jessie.d/         oneiric.d/        stable.d/         wily.d/
centos-5.d/       disco.d/          fedora-core-15.d/ fedora-core-9.d/  karmic.d/         precise.d/        stretch.d/        xenial.d/
centos-6.d/       edgy.d/           fedora-core-16.d/ feisty.d/         lenny.d/          quantal.d/        testing.d/        yakkety.d/

Pour ma VM, j’utilise un stockage fichier et non LVM, une fois la commande lancée, je fais quelques ajustements côté configuration, le fichier suivant est créé automatiquement à la création de la VM :

/etc/xen/vmlinux1.cfg

J’indique simplement que ma VM va utiliser l’interface « br0 » comme bridge en ajoutant « bridge=br0 », puis démarre la VM :

vif         = [ 'ip=192.168.1.77 ,mac=00:16:3E:3A:92:12, bridge=br0' ]
#démarrage de la VM : 
#xl create /etc/xen/vmlinux1.cfg

#listage des VM qui tourne via : 
#xl list 


2.2 Problèmes rencontrés et opérations diverses :

Sur l’hyperviseur :

j’ai du désactiver la sécurité du KERNEL le temps de faire la configuration, pour ce faire :

sudo systemctl disable apparmor
sudo reboot

Puis j’ai tout réactiver, une fois ma VM en place :

sudo systemctl enable apparmor
sudo systemctl start apparmor

Pour la VM, ici c’est la distribution UBUNTU « minimale » qui est installée (l’éditeur vim se lance via la command editor),
la configuration réseau se fait via :

# sudo editor /etc/netplan/01-netcfg.yaml
# sudo netplan generate 
# sudo netplan --debug apply

Cela me donne :

# cat /etc/netplan/01-netcfg.yaml

# Arno: Set static IP for VM interface eth0
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses: [192.168.1.77/24]
      gateway4: 192.168.1.1
      nameservers:
          addresses: [8.8.8.8]

Une fois la VM installée, il faut refaire la configuration via NETPLAN et tester la configuration DNS via :

#Test DNS : 
# systemd-resolve --status

Enfin pour lancer la VM automatiquement je fais ceci sur l’hyperviseur :

mkdir -p /etc/xen/auto/
ln -s /etc/xen/vmlinux1.cfg /etc/xen/auto/vmlinux1.cfg

Le dossier « auto » est scanné par le script : /etc/init.d/xendomains et sa configuration : /etc/default/xendomains.

Voilà j’espère que cela vous aura été utile !