Création d'un template de vserver

réf : http://linux-vserver.org/Building_Guest_Systems#Building_guests_using_the_rsync_build_method

L'idée générale est de créer un vserver modèle minimal qui ne sera pas démarré, puis de créer ensuite les vservers de l'hôte directement à partir de ce modèle au lieu de refaire des debootstrap.

On se propose donc d'un système minimal comprenant outre par défaut syslog et cron,  des choses telles que sshd, sudo et un éditeur vim.

On suppose qu'on a déjà une plateforme installée telle que décrite ici : https://sites.google.com/a/bousquie.fr/jerome/Home/debian-etch-et-vserver-sur-sun-x4100

Création du template


On crée donc le vserver template. Je choisis volontairement de ne pas le stocker dans lvm : c'est juste une installation modèle qui n'a pas vocation à tourner et qui ne risque donc pas de changer de taille.
Je lui donne la dernière adresse de ma plage d'IP et je ne le déclare pas dans le DNS. Je ne lui déclare pas non plus de démarrage automatique (le fameux init/mark).

vserver template build -m debootstrap --hostname template --interface eth0:10.230.1.254/24 -- -d etch
cp /etc/apt/sources.list /vservers/template/etc/apt/



Ensuite on configure le guest et on installe les applications citées précédemment. Je choisis de démarrer le vserver et d'installer de l'intérieur.

vserver template start
vserver template enter

apt-get update              (on commence par mettre le système du guest à jour)
apt-get upgrade
apt-get install locales     (on va initialiser les variables de localisation pour éviter les warnings lors des installations)
dpkg-reconfigure locales (choisir fr_FR.UTF-8 UTF-8)  
dpkg-reconfigure tzdata (choisir 9-Indian Ocean, Reunion)
date                        ( si besoin, taper
date MMJJhhmmAAAA )


apt-get install vim         (un éditeur pour ceux qui ne supportent pas nano)
apt-get install sudo        (le service sudo)
apt-get install ssh         (le serveur et le client ssh)
apt-get install telnet (souvent nécessaire sur un serveur pour vérifier qu'on passe bien par les points de sécurité : firewalls, proxys, etc)

On sort et on stoppe le serveur :

exit
vserver template stop

Le vserver template est maintenant prêt à être copié pour la fabrication rapide d'autres vservers.

Clonage du template

On utilise la méthode rsync.


Attention : d'après la doc vserver, on suit la procédure suivante. Sauf qu'elle ne fonctionne pas sous debian (voir message erreur ci-dessous) à cause d'un bug. A vérifier donc peut-être avec une autre distribution.
Si on veut créer un clone, nommé clone, sur le même host à partir du vserver template :

vserver clone build -m rsync  --hostname clone --interface eth0:10.230.1.250/24 -- --source /etc/vservers/template


Si on se trouve sur un hôte vserver différent (mais avec la même architecture de processeur !) et qu'on veut créer un guest clone du vserver template localisé sur l'hôte source_host :

vserver clone build -m rsync --hostname clone --interface eth0:10.230.1.250/24 -- --source root@source_host:/etc/vservers/template



Bug util-vserver sous debian 4 etch :

vserver clone start
secure-mount: chdir("/tmp"): No such file or directory
/etc/vservers/clone/fstab:2:1: failed to mount fstab-entry
find: var: Aucun fichier ou répertoire de ce type
fakerunlevel: open("/var/run/utmp"): No such file or directory


Copie d'un vserver d'un hôte (hote_source) à un autre (hote_dest)

La méthode suivante fonctionne et a été testée sous debian (amd64). Elle permet de copier directement sur le même ou sur un host différent un vserver arrêté ou en marche. Evidemment, il faut que les deux hôtes soient de la même architecture de processeurs.

IMPORTANT : Cette méthode permet de copier un template, mais aussi n'importe quel guest déjà installé, même en marche, ainsi que ça conf réseau, ses utilisateurs, etc

On se place sur hote_dest :

rsync -av root@hote_source:/etc/vservers/template/ /etc/vservers/template/
rsync -av root@hote_source:/etc/vservers/.defaults/vdirbase/template/ /etc/vservers/.defaults/vdirbase/template/


Donc, ensuite, si le hote_source et le hote_dest sont dans le même plan d'adresses, vous pouvez simplement faire
- sur le hote_source :
    vserver template stop

-sur le hote_dest :
     vserver template start


Et ça marche immédiatement !!!

Comments