Comment utiliser le nouveau virsh provider de Foreman 1.4

Ce matin j’ai décidé de tester une nouvelle fonctionalité de Foreman 1.4 : le nouveau DHCP, DNS et TFTP provider : virsh.
Virsh provider permet de manager via la Libvirt les réseaux virtuels (via dnsmasq) pour du test ou du dévelopement en local. Cela permet d’avoir un workflow complet de provisioning sans avoir à installer bind, tftpd et dhcpd.

Ce post est largement inspiré de la documentation de Foreman 1.4.

Configuration de la Libvirt

La première chose à faire est de configurer un réseau persistent à la libvirt.
Créez un fichier nommé net-defintion.xml. Vous pouvez bien sur changer le nom du réseau, les ranges d’IP, le nom du domaine, etc ..

$ cat net-defintion.xml
<network>
<name>default</name>
<uuid>16b7b280-7462-428c-a65c-5753b84c7545</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:b2:fa:27'/>
<domain name='fitzdsl.local'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<tftp root='/tftp'/>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
<bootp file='pxelinux.0'/>
</dhcp>
</ip>
</network>

Vous devez ensuite créer et démarrer le réseau par la libvirt:

# virsh net-define --file net-definition.xml
# virsh net-start default

Ensuite nous devons configurer le répertoire qui va servir les fichiers TFTP. Les commandes ci-dessous viennent tout droit de la documentation de Foreman pour Fedora :

mkdir -p /var/tftproot/{boot,pxelinux.cfg}
yum -y install syslinux
cp /usr/share/syslinux/{pxelinux.0,menu.c32,chain.c32} /var/tftproot
chgrp -R nobody /var/tftproot
find /var/tftproot/ -type d | xargs chmod g+s

Configuration du smart-Proxy

Vous devez avoir un smart-proxy qui tourne en local sur votre machine. Celui-ci va prendre en charge TFTP, DNS and DHCP.
Il faut maintenant configurer celui pour utiliser le nouveau provider :

:tftp: true
:tftproot: /var/tftproot
:tftp_servername: 192.168.122.1
:dns: true
:dns_provider: virsh
:dhcp: true
:dhcp_vendor: virsh
:virsh_network: default

Vérifiez que votre smart-proxy a les droits sudo suivants:

Defaults !requiretty
foreman-proxy ALL=/usr/bin/virsh

Configuration de Foreman

Vous devez d’abord créer le smart-proxy (ou raffraichir ses features si il existait déjà):

Dans Infrastructure:
New proxy : http://localhost:8443

Vous devez ensuite créer un nouveau domaine et sous-réseau:

  • Créez un nouveau domaine et nommez le de manière à ce qu’il match le « domain name » du fichier net-defintion.xml.
  • Créez un nouveau sous-réseau ayant les mêmes valeurs que le fichier net-definition.xml

Dans mon cas:

Name: Home
Network address: 192.168.122.0
Netmask: 255.255.255.0
Start IP Range: 192.168.122.2
Stop IP Range: 192.168.122.255
  • Dans l’onglet « Domains », cochez le domaine que vous venez de créer.
  • Dans l’onglet « Proxies », selectionnez le proxy local pour DHCP, TFTP and DNS.

Créer une nouvelle VM

Lorsque vous allez créer une nouvelle VM, prennez soin de sélectionner dans l’onglet « Virtual Machine »:

  • Network Type => Virtual (NAT)
  • Network => « default »

Vous savez maintenant créer un environement complet de provisioning avec Foreman. La seule fonctionalité manquante est le que PTR record n’est pas créé.

Un grand merci à Lukas (@lzap) qui à implémenté cette super fonctionnalité !

Share
  1. Don’t forget, you can also use the new compute profiles feature (http://theforeman.org/manuals/1.4/index.html#5.2.2UsingComputeProfiles) to handle selecting the network when creating a new host.

  2. ça semble en effet super puissant Foreman mais je dois faire blocage car je ne comprends rien ;-)
    Supposons que je veuille provisionner les sources apt de mes hosts … je ne parle pas d’install mais de gestion d’un parc existant.
    Quelques pastie de quelques exemples simple serait je l’espère apte à éclairer mon esprit embrumé…

Laisser un commentaire