Kickstart facile avec Oracle VM et Xen

Et si vous pouviez utiliser Kickstart avec Oracle VM sans DHCP ni un ISO personnalisé ?
Créer un guest Linux sur Oracle VM pour x86 est un exercice d’autant plus amusant que les possibilités sont nombreuses. Vous pouvez créer un clone d’une machine virtuelle existante ou télécharger un template depuis Oracle Software eDelivery Cloud[1]. Vous pouvez également démarrer votre VM en mode HVM et l’installer depuis le DVD. Vous pouvez évidemment utiliser Kickstart. Vous pouvez construire votre propre template sans démarrer la VM. Vous pouvez utiliser des fichiers OVF[2] générés par d’autres hyperviseurs tels que Virtualbox ou VMWare. Vous pouvez les construire à partir de serveurs physiques ou virtuels à l’aide de l’outil de conversion P2V.
Kickstart est probablement la méthode qui offre le plus de possibilité. C’est aussi la méthode la plus flexible et la plus rapide pour installer des systèmes linux basés sur des RPM tels que Oracle Linux. Lorsqu’il est utilisé avec des VMs, Kickstart permet de provisionner des guests en 2 à 10 minutes selon le nombre de RPM, la vitesse du réseau et la finesse du paramétrage. Plus important, une fois lancé, il est possible d’éviter toute interaction avec les utilisateurs. Malgré tout, il y a quelques contraintes et notamment le fait que Kickstart nécessite d’utiliser un ISO personnalisé ou de s’appuyer sur un serveur DHCP pour gérer le démarrage en PXE. Evidemment, il existe des outils de gestion[4][5] pour simplifier le processus. Et pourtant…
Oracle VM et Xen 4.2+ permettent de démarrer et d’installer un guest à l’aide d’un fichier de configuration Kickstart et un réseau statique. C’est possible grace au script xenpvboot d’Oracle VM. Zhigang Wang de Oracle a intégré ce script, désormais nommé xenpvnetboot[6], dans Xen 4.2. Cet article présente comment cette méthode fonctionne et à quel point les choses sont simplifiées

Fichier de configuration Kickstart

Pour démontrer cette fonctionnalité, vous devez utiliser un fichier de configuration Kickstart comme le fichier demo.cfg ci-dessous. Le fichier ne dépend pas de la VM; il ne contient pas le nom du serveur ni la configuration réseau. Dans cet exemple, nous considérerons qu’il est accessible depuis cette URL http://yum.easyteam.fr/templates/demo.cfg même si vous ne pouvez pas l’utiliser :

cat demo.cfg
# Demo Only KickStart File
#    - Packages are not up-to-date
#    - Packages are missing
#    - Highly unsecured
# System Configuration and Installation
firewall --disabled
install
url --url="http://yum.easyteam.fr/DVD"
rootpw --iscrypted $1$gguQYHju$9Xq7w61deFUfZ3wLQNJqM1
auth  --useshadow  --passalgo=sha512
text
keyboard fr
lang en_US
selinux --disabled
skipx
logging --level=info
halt
timezone  Europe/Paris
# Network
# -- no need, it’s given as parameter
# Storage Configuration
bootloader --location=mbr
zerombr
clearpart --all
part /boot --asprimary --fstype="ext3" --size=500
part pv.008002 --grow --size=1
volgroup vg_sys --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=vg_sys --grow --size=1
logvol swap --name=lv_swap --vgname=vg_sys --size=4096
%packages --nobase
@core
%end

Note 1 :
Ce fichier demo.cfg référence le DVD Oracle Linux 6 ISO publié à l’URL http://yum.easyteam.fr/DVD. Vous devrez également modifier cette URL et la faire correspondre à une URL existante dans votre configuration. Pour des raisons de sécurité, évitez d’utiliser cette configuration : elle n’inclut pas les erratas ; le mot de passe root est manager.

Note 2 :
Une fois installée, la machine virtuelle s’arrête automatiquement. De cette manière, vous pouvez changer son script de démarrage xenpv(net)boot en pygrub.

Fichiers de configuration des Dom-U

Pour créer un domaine utilisateur Dom-U avec Kickstart et une configuration réseau statique dans Oracle VM, vous devez utiliser les paramètres[3] de boot de Linux/Anaconda et créer un fichier de configuration pour un guest paravirtualisé qui contient ce qui suit :

bootloader='/usr/bin/xenpvboot'
bootargs='--args="ksdevice=eth0 network bootproto=static ip=192.168.0.108 netmask=255.255.255.0 gateway=192.168.0.1 dns=192.168.0.1 hostname=marvel.easyteam.fr ks=http://yum.easyteam.fr/templates/demo.cfg" http://yum.easyteam.fr/DVD/'

Pour une VM Xen 4.2+, les arguments sont un peu différents. le paramètre bootargs nécessite d’utiliser le mot clé --location pour référencer la distribution Linux :

bootloader='/usr/lib64/xen/bin/xenpvnetboot'
bootargs='--args="ksdevice=eth0 network bootproto=static ip=192.168.0.108 netmask=255.255.255.0 gateway=192.168.0.1 dns=192.168.0.1 hostname=marvel.easyteam.fr ks=http://yum.easyteam.fr/templates/demo.cfg" --location http://yum.easyteam.fr/DVD/'

Configuration depuis le manager Oracle VM

Comme vous le savez, vous n’êtes pas supposé modifier les fichiers de configuration des Dom-U manuellement sur vos serveurs Oracle VM. Heureusement la console d’administration du manager permet d’implémenter cette fonctionnalité de manière directe. Lorsque vous créez un guest paravirtualisé, l’onglet « Boot Order » propose l’option « Network » qui indique d’utiliser le script xenpvboot; Le paramètre « Network Boot Path » permet de lui passer ses arguments :
xenpvboot
Si vous avez créé les bonnes ressources pour votre machine virtuelle (disque et carte réseau), vous pourrez l’installer en quelques minutes.

Note:
Une fois démarrée et installée, la VM est automatiquement arrếtée. Changez l’option de boot en « Disk ». Votre VM sera alors lancée à l’aide du script pygrub et sa configuration sera persistante et stockée dans ses disques.

Et après ?

Kickstart est, de loin, la méthode la plus flexible pour automatiser les installations Oracle Linux 6. Oracle VM/xenpvboot et Xen 4.2+/xenpvnetboot permettent de lancer cette configuration en précisant les paramètres réseau directement depuis la console ou le fichier de configuration. Provisionner des machines virtuelles est simple, rapide et permet une personnalisation très fine.
Comme vous avez pu le découvrir dans l’article précédent, Les logiciels Oracle peuvent aussi être facilement fournis sous la forme de RPMs. Kickstart permet donc de gérer le provisionning autimatique de vos serveurs. Par la suite, vous pourrez:

  • utiliser des scripts et les APIs pour aller encore plus vite
  • gérer les installations de vos applications et leur configuration de manière tout aussi automatique

Les prochains articles décriront certaines de ces opérations.
Bibliographie
[1] Oracle Software Delivery Cloud – Oracle Linux and Oracle VM
[2] Open Virtualization Format Standard
[3] Red Hat Enterprise Linux 6- Installation Guide – Chapter 28. Boot Options
[4] Le site web de Cobbler
[5] Le site web de Spacewalk
[6] xenpvnetboot sur wiki.xen.org