Dans cet article, je vais vous détailler la configuration que j’ai mis en place avec Xen et Ganeti afin d’avoir des VMs Debian et Ubuntu déployables en 45 secondes chrono. Pour cela, on utilise Debootstrap qui permet de créer un environnement de base Debian.
Comme je vous le présentais dans mon post Cluster Xen et Ganeti, on peut facilement se mettre en place un IaaS privé afin d’entretenir un parc de machines virtuelles. Je vais donc vous montrer comment, grâce à debootstrap, on peut avoir des VMs déployables sur le réseau en moins d’une minute.
Voici la liste des commandes à effectuer pour installer Xen et Ganeti sur un serveur Debian physique (vous pouvez le faire sur plusieurs, pour former un cluster de virtualisation).
Une fois que votre serveur est correctement installé et configuré, on va ajouter une variante Debootstrap à Ganeti, soit Debian Jessie. Pour cela on va créer le fichier /etc/ganeti/instance-debootstrap/variants/jessie.conf et y ajouter ceci :
ARCH="amd64" SUITE="jessie" EXTRA_PKGS="acpi-support-base,udev,less,grub2-common,lvm2,openssh-server,linux-image-amd64,vim,vlan,locales"
Ensuite on ajoute jessie à la liste de variantes (/etc/ganeti/instance-debootstrap/variants.list). Vous pouvez également faire de même pour trusty (Ubuntu 14.04).
default jessie
Dernière étape, il va falloir remplacer le script qui créer la VM (création des volumes, copie du file-system…) depuis mon dépôt Github :
git clone https://github.com/valentin2105/Ganeti.git cp -r Ganeti/os/debootstrap/create /usr/share/ganeti/os/debootstrap/create
Ce script améliore un peu le script de base de Ganeti en y ajoutant un LVM interne aux VMs, leurs propres kernels, les paquets qu’on souhaite avoir à sa création et une gestion automatique du réseau (IPv4/v6).
On peut maintenant lancer la création de notre première VM :
gnt-instance add -t plain --disk 0:size=20G --disk 1:size=200M -B memory=2G,vcpus=2 -o debootstrap+jessie --no-ip-check --no-name-check bigbang.domain.com
Grâce à cette commande, on crée la VM bigbang.domain.com avec 2Go RAM et 2 vCPUs.
La première création prend quelques minutes, car il télécharge les paquets à jours pour votre VM et en créer un cache. Cela permet de déployer ensuite les VMs très rapidement car il y a juste à copier le file-system. Les machines virtuelles possèdent une partition /boot de 200Mo et une autre de 20Go en LVM (dans l’exemple).
Il faut ensuite lancer cette commande pour que la VM utilise son propre kernel au prochain démarrage car au premier boot, la VM utilise le même kernel que la machine hôte, cependant un update-grub est ajouté dans le rc.local de la VM ce qui lui permet de bénéficier de son propre kernel présent dans sa partition /boot (une sorte de hook).
gnt-instance modify --hypervisor-parameters=kernel_path=/usr/lib/grub-xen/grub-x86_64-xen.bin bigbang.domain.com
Vous devriez pouvoir accéder à votre VM grâce à la console pour configurer votre accès SSH (cela est parfaitement automatisable) :
gnt-instance console bigbang.domain.com
Et voilà, vous avez bootstrapé votre première VM sous Debian, les autres se créeront très rapidement ! Vous pouvez jetez un coup d’œil dans le dépôt, il y a un script tout fait NewVM.sh qui permet de simplifier la création de VM en précisant leurs tailles, leurs puissances et leurs configurations réseau. Il faudra l’utiliser si vous voulez que votre machine virtuelle soit joignable directement via le réseau, sinon vous devrez manuellement lui donner une IP via la console Ganeti (dans /etc/network/interfaces).
Voici le Cheatsheet de management d’un Cluster Ganeti :
Be First to Comment