Convirt est un projet libre dont le but est de fournir une interface graphique pour faciliter le management des machines virtuelles: lifecycle.
Convirt est issue de Xenman, et dans sa version 1.0, il en avait hérité son interface GTK. Bien que GTK soit portable sur de nombreuses architecture, il est loin d’être répandu sur les plate-formes windows et OSX! Pour sa version 2.0, la société qui propulse convirt: Conviture a donc ré-orienté le développement pour proposer un environnement Web2.0 (ouais trop classe!) là encore avec un moteur python. Résultats: une interface opensource, au look franchement fancy et aux possibilités vraiment complètes.
Templates, provisionning, management de tâches, monitoring, reporting et lifecyling… tout y est! On trouve même un catalogue de machines virtuelles issues des repository de convirture ou d’autres sociétés impliquées dans convirt. A noter que convirt propose dans son catalogue une image pour installer convirt 🙂 l’installation récursive… il fallait y penser (en fait il s’agit de permettre aux utilisateur de Xenman ou de convirt 1.x d’installer facilement convirt 2.0).
Convirt2.0 apporte au libre la brique graphique rassurante qui, pour certains, faisait jusqu’alors défaut. Un soft qui tiend la dragée haute à ses équivalents propriétaires tels que XenCenter ou VSphere respectivement destinés aux environnements XenCitrix et VMWare.
Dans ce tuto nous verrons comment installer convirt sur un dom0 Xen basé sur debian Squeeze. On mettra aussi l’accent sur la sécurité en utilisant SSL pour crypter les échanges entre le serveur qui manage les VM (convirt) et les dom0 Xen. On fera aussi tournerl’applucation avec son propre user de façon à séparer au maximum les privilèges.
Debian 6.0 débarque de base avec Xen 4.0.1 qui est une version tout à fait récente qui propose notamment un kernel pvops, même si certaines fonctionnalités telles que pvusb ne sont pas implémentées. Partons du principe que la Debian est déjà correctement instalé ;)… L’install pdoit être faite en tant que root ou sudoer.
Préparation de l’environnement
On créé tout d’abord un utilisateur qui servira à installer et faire tourner l’application convirt:
root@dom0:~$ addgroup --system convirt
root@dom0:~# adduser --system --ingroup convirt --disabled-password --home /var/cache/convirt convirt
Dans le fichier /etc/sudoers nous ajoutons la ligne suivante afin de nous faciliter la vie:
Defaults>convirt set_home
root@dom0:~# mkdir /var/lib/convirt
root@dom0:~# chown convirt:convirt /var/lib/convirt
root@dom0:~$ cd /var/cache/convirt convirt
root@dom0:~# sudo -u convirt -s
Nous sommes maintenant un utilisateur non privilégié. Verifions que nous sommes bien là où nous devons être:
convirt@dom0:~$ pwd
/var/cache/convirt
On est dans notre home directory (si ce n’est pas le cas, faites un cd vers le répertoire /var/cache/convirt), on va donc créer une paire de clé SSH pour nous identifier auprès des serveurs managés.
ssh-keygen -t rsa -b 2048
Ces clés nous servirons plus tard.
Installation de convirt
Récupérons d’abord le packages. Il est disponible sur le sites de convirture mais il faut chercher un peu.
wget --no-cache http://www.convirture.com/downloads/convirt/2.0.1/convirt-install-2.0.1.tar.gz
on décompresse l’archive puis on redevient root (ou sudoer).
convirt@dom0:~$ tar zxvf convirt-install-2.0.1.tar.gz
convirt@dom0:~$ exit
Une fois dans le répertoire on va lancer l’installation des dépendances via le script install_dependencies. ATTENTION, ceci installera MySQL, si ce n’est pas déjà le cas, sachez que le process d’install change le moteur de bases de données au profit d’innoDB! De plus si vous êtes dans ce cas il vous faudra tweaker un peu la procédure. De même ce script installe des packages python sans passer par le système de packaging de debian.
root@dom0:~# cd /var/cache/convirt/convirt-install
root@dom0:~# ./install/cms/scripts/install_dependencies
A ce stade il est possible que le script ne s’éxecute paset renvoie l’erreur suivante (c’est le cas lors d’une upgrade ou d’une réinstallation):
Setuptools version 0.6c11 or greater has been installed.
(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)
sudo: easy_install: command not found
ERROR: Failed installing virtualenv.
Dans ce cas, installez le package python-setuptools:
root@dom0:~# apt-get install python-setuptools
Lorsque le process vous demande un mot de passe pour l’admin MySQL entrez « convirt »… On le changera par la suite.
Assurez vous d’avoir les paramètres suivants dans /etc/mysql/my.cnf une fois l’install terminée:
root@dom0:~# cat /etc/mysql/conf.d/convirt.cnf
[mysqld]
default-storage-engine=innodb
innodb_buffer_pool_size=1G
innodb_additional_mem_pool_size=20M
Puis on relance mysqld:
root@dom0:~# /etc/init.d/mysql restart
Les dépendances sont maintenant résolues nous pouvons passer à l’install de convirt proprement dite. Pour cela nous allons redevenir un utilisateur non privilégié:
root@dom0:~# sudo -u convirt -s
convirt@dom0: ~$ cd
convirt@dom0: ~$vi convirt-install/install/cms/scripts/install_config
On édite le fichier de configuration du script d’install de façon à lui spécifier l’emplacement où l’on souhaite installer convirt.
En ce qui me concerne, je trouve que /var/lib/convirt est un très bon endroit. Je vais donc setter le prefix comme suit:
CONVIRT_BASE=/var/lib
En plus du package d’installation il nous faut télécharger l’application proprement dite,
convirt@dom0:~$ wget --no-cache http://www.convirture.com/downloads/convirt/2.0.1/convirt-2.0.1.tar.gz
avant de lancer l’install:
convirt@dom0:~$ source convirt-install/install/cms/scripts/install_config
convirt@dom0:~$ tar -xzf ./convirt-2.0.1.tar.gz -C $CONVIRT_BASE
convirt@dom0:~$ ./convirt-install/install/cms/scripts/setup_tg2
Durant l’install il est possible que vous voyez le message d’erreur suivant:
ls: impossible d'accéder à /var/lib/convirt/tg2env/lib/python2.4/site-packages/Beaker-*py2.4.egg/beaker/ext/google.py: Aucun fichier ou dossier de ce type
Cela n’empêche pas l’appli de fonctionner sans problème… n’en tenez pas compte.
Configuration de convirt
L’installation étant terminée on va configurer l’application.
Principalement, nous allons changer le mot de passe utiliser par l’appli por se connecter à la base de donnée. On édite donc le fichier /var/lib/convirt/src/convirt/web/convirt/development.ini:
sqlalchemy.url=mysql://convirt:somepass@localhost:3306/convirt?charset=utf8
Au niveau de MySQL, on va évidement changer le mot de passe de l’appli mais aussi celui de l’administrateur de base de données car celui ci a été setter à « convirt » lors du process d’install:
convirt@dom0:~$ mysqladmin -u root -p password newrootpwd
convirt@dom0:~$ history -c
convirt@dom0:~$ mysql -u root -p
mysql> grant all privileges on convirt.* to 'convirt'@'localhost' identified by 'somepass';
mysql> flush privileges ;
mysql> exit
On lance ensuite le script suivant:
convirt@dom0:~$ ./convirt-install/install/cms/scripts/setup_convirt
Le script vous demande une passphrase… laissez vide et validez.
Démarrez convirt:
convirt@dom0:~$ cd /var/lib/convirt
convirt@dom0:~$ ./convirt-ctl start
Si vous constatez le message d’erreur suivant:
No module named xen.xend.XendClient
Votre environnement python n’arrive pas à trouver le module Xen. Pour y remédier, un simple lien symbolique « do the trick » (attention à être root pour les créer):
root@dom0:~# ln -s /usr/lib/xen-4.0/lib/python/xen /usr/lib/python2.6/
root@dom0:~# ln -s /usr/lib/xen-4.0/lib/python/grub /usr/lib/python2.6/
Vous pouvez alors vous loggez qur l’appli via un navigateur web http://hostname:8081 (admin/admin)
Management des serveurs
Afin de manager un serveur celui doit être préalablement configurer pour que convirt puisse y accéder:
Tout d’abord il faut installer les clés SSH que nous avons générées au début de ce tuto. On copie donc la clée publique du serveur convirt vers le serveur managé.
scp /var/cache/convirt/.ssh/id_rsa.pub user@managed_server:/tmp
Puis on la place dans le homedir de root sur le serveur managé
root@managed:~# [ -d /root/.ssh ] || mkdir /root/.ssh && cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
Les étapes suivantes sont normalement complétés automatiquement si vous installez les convirt-tools sur le dom0. Ici on n’installe pas cet outils,et on paramètre manuellement Xen de façon à bien comprendre les services mis en jeu.
.Assurez vous que les packages suivants sont bien installés sur le dom0 à manager:
root@managed:~# apt-get -y install socat dnsmasq uml-utilities lvm2 expect python-pexpect kpartx python-openssl
Je vous conseilles de désactiver dnsmasq, à plus forte raison si vous utilisez un modèle réseau de type bridge (dans /etc/default/dnsmasq).
On créé un fichier d’information sur le serveur à manager, ce fichier n’est pas crucial pour le fonctionnement de l’application mais permet d’obtenir des statistiques sur la plate-forme managée par convirt:
root@managed:~# cat /var/cache/convirt/server_info
DISTRO="Debian"
CODE_NAME="6.0"
VER="6.0"
KERNEL="2.6.32-5-xen-amd64"
ARCH="x86_64"
V_PLATFORM="XEN"
V_PLATFORM_VER="4.0.1"
DEFAULT_BRIDGE="xenbr0"
Configuration de Xen
On va paramétrer Xen de façon à ce qu’il utilise les services XMLRPC. Habituellement je préfère utiliser XMLRPC over SSL mais convirt semble avoir un problème avec SSL dans la version 4.0.1 de Xen. Dans le fichier /etc/xen/xen-config.sxp, on règle les paramètres suivants (chacun peut ajuster selon ces besoins/lubies) :
(xend-tcp-xmlrpc-server yes)
(xend-relocation-server yes)
(dom0-min-mem 512)
(xend-tcp-xmlrpc-server-address '0.0.0.0')
(xend-tcp-xmlrpc-server-port 8006)
#(xend-tcp-xmlrpc-server-ssl-key-file xmlrpc.key)
#(xend-tcp-xmlrpc-server-ssl-cert-file xmlrpc.crt)
(xend-relocation-port 8002)
Si toutefois vous souhaitez utilisez l’encryption SSL (Par exemple avec Xen 3.x), il vous faudra dé-commenter les lignes en commentaires et génèrer les clés et certificats adéquats:
root@managed:~# openssl genrsa -out /etc/xen/xmlrpc.key 2048
root@managed:~# chmod 600 /etc/xen/xmlrpc.key
root@managed:~# openssl req -new -key /etc/xen/xmlrpc.key -out /etc/xen/xmlrpc.csr
root@managed:~# openssl x509 -req -in /etc/xen/xmlrpc.csr -signkey /etc/xen/xmlrpc.key -days 999 -out /etc/xen/xmlrpc.crt
root@managed:~# /etc/init.d/xend restart
Lors de la création de la demande de certificat, un password est demandé en plus des autres informations: laissez vide!
Pour tester que les clés sont correctement installées, essayez de vous connecter avec le user convirt depuis le serveur convirt:
convirt@dom0:~$ ssh -i /var/cache/convirt/.ssh/id_rsa root@managed_server
Acceptez la clé. Si vous vous connectez sans problème c’est gagné!
Déconnectez vous… faites un peu de nettoyage:
convirt@dom0:~$ rm ~/.ssh/cms_id_rsa*
convirt@dom0:~$ cd /var/lib/convirt
convirt@dom0:~$ ./convirtctl stop
convirt@dom0:~$ ./convirtctl start
Vous pouvez maintenant ajoutez le serveur Xen managed dans convirt en utilisant XML-RPC!
Laisser un commentaire