logo Jeudis du Libre

la reprise des Jeudis du Libre

les mois passent mais les conférences continuent !

La saison 2012-2013 des Jeudis du Libre à reprit à Mons et Bruxelles (avec un petit mois de retard), si vous ne le saviez pas alors vous avez manqué la conférence sur “comment devenir Debian Developer”, la table ronde autour des backups mais il n’est pas trop tard pour suivre la conférence sur Drupal jeudi prochain à l’ISIMs

Suivra les méthodologie Agile, puis Ruby et les ERP etc … tout est là : http://jeudisdulibre.be/

 

Nous sommes toujours à la recherche de conférenciers et aussi toujours ouvert à vis idées de sujet donc n’hésitez pas à nous contacter en commentaire ici, sur IRC freenode #loligrub ou twitter ou email, les moyens ne manquent pas alors n’hésitez pas nous sommes “ouvert et libre” aux suggestions !

 

A bientôt et je vous laisse découvrir notre superbe logo effectué par un élève de l’ISIMs en juin 2012

DSC_0014

events jeudi 20 octobre Paris – Mons

Jeudi dernier c’était la journée conférence pour ma part. Petit tour à Paris pour le sysadmin days #3 avec un atelier Chef au matin (vraiment génial comme formule et très bons orateurs), suivi d’une discution intéressante avec des personnes de Fotolia et IRILL au lunch et enfin la présentation de l’ouverte public du code de rudder (interface web de simplification de gestion de cfengine3). Suite à toute cela direction Mons pour le deuxième Jeudis du Libre de Mons, thème Joomla par Gaëtan Naisy.

Continue reading

Apache-Tomcat

piwam sur Debian Squeeze

Afin de permettre l’utilisation de l’outil piwam qui est utile pour gérer les membres d’une association, j’ai eut besoin de le migrer de notre ancien hébergeur vers le nouveau mais petit bémol piwam ne fonctionne pas avec PHP5.3 qui est la version sous Debian Squeeze.

Je vais donc suivre l’explication du site Dave James Miller pour mettre en place PHP5.2 en plus de PHP5.3 .

Installation

Toute l’explication part du principe que vous maitrisez votre système et que vous êtes “root”; je n’utilise pas les commandes en “sudo” durant ce tutoriel.

Un système à jour

S’assurer que le serveur à jour :


apt-get update
apt-get dist-upgrade

Installation de fastcgi

Pour installer le module fast-cgi tapez la commande suivante :

apt-get install libapache2-mod-fastcgi
[...]
Enabling module fastcgi.
Run '/etc/init.d/apache2 restart' to activate new configuration!
:~#

Si jamais le module ne s’active pas durant l’installation, tapez la commande suivante

a2enmod actions fastcgi

Si vous souhaitez profiter immédiatement de fastcgi alors redémarrez Apache2 sinon attendez la fin de l’explication.

/etc/init.d/apache2 restart

Quelques prérequis

Pour permettre la compilation quelques packages sont nécessaires :


apt-get build-dep php5
apt-get install libfcgi-dev

Ces 2 commandes peuvent faire un peu peur car elles ajoutent beaucoup de paquets, dans mon cas 173 nouveaux paquets sont installés pour un total de 115Mo, mais c’est surtout pour permettre d’avoir un environnement de compilation donc rien d’exotique n’ayez pas peur.

Compilation

Préparation

Créer un répertoire pouvant contenir les différentes versions de PHP5.2 au besoin
mkdir -p /usr/src/php5.2/
cd /usr/srv/php5.2

Récupération des sources de PHP5.2.17 depuis un miroir en Belgique.


wget http://www.php.net/get/php-5.2.17.tar.gz/from/be.php.net/mirror -O php-5.2.17.tar.gz

Décompression des sources

tar -zxf php-5.2.17.tar.gz
cd php-5.2.17

Compilons !

Commençons par un petit “./configure” dans lequel nous indiquons tous les modules que nous souhaitons utiliser dans notre PHP5.2 (si jamais il vous manque des modules par la suite alors refaites un “./configure” qui contient ce que vous désirez; un conseil allez-y module par module et pas tout d’un coup).

Au final PHP5.2 sera installé dans le répertoire /usr/local/php52/


./configure \
--prefix=/usr/local/php52 \
--enable-force-cgi-redirect \
--enable-fastcgi \
--with-regex=php \
--enable-calendar \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-bcmath \
--with-bz2 \
--enable-ctype \
--with-iconv \
--enable-exif \
--enable-ftp \
--with-gettext \
--enable-mbstring \
--with-pcre-regex \
--enable-shmop \
--enable-sockets \
--enable-wddx \
--with-libxml-dir=/usr \
--with-zlib \
--with-openssl=/usr \
--enable-soap \
--enable-zip \
--with-mhash=yes \
--with-gd \
--with-mysql \
--with-mysqli \
--with-pdo-mysql \
--with-pear \
--with-jpeg-dir=/usr/lib

Si tout s’est passé correctement vous devriez voir ceci :

+——————————————————————–+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+——————————————————————–+

Thank you for using PHP.

Maintenant effectuons la compilation à proprement parler :

make

Si tout s’est passé correctement vous devriez voir ceci :

Build complete.
Don’t forget to run ‘make test’.

Déployons la compilation de PHP5.2 dans les répertoires définitif
make install

Installing PHP SAPI module: cgi
Installing PHP CGI binary: /usr/local/php52/bin/
Installing PHP CLI binary: /usr/local/php52/bin/
Installing PHP CLI man page: /usr/local/php52/man/man1/
Installing build environment: /usr/local/php52/lib/php/build/
Installing header files: /usr/local/php52/include/php/
Installing helper programs: /usr/local/php52/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php52/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/php52/lib/php/
[PEAR] Archive_Tar – installed: 1.3.7
[PEAR] Console_Getopt – installed: 1.2.3
[PEAR] Structures_Graph- installed: 1.0.3
[PEAR] XML_Util – installed: 1.2.1
[PEAR] PEAR – installed: 1.9.1
Wrote PEAR system config file at: /usr/local/php52/etc/pear.conf
You may want to add: /usr/local/php52/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/php52/include/php/ext/pdo/

Configuration

Maintenant que PHP5.2 est installé il faut pouvoir l’utiliser avec Apache2, cette partie est moins simple que la précédente car beaucoup d’aspects peuvent être effectués. Tout d’abord il faut différencier PHP en module et en CGI. L’utilisation de PHP en module fait qu’on a une seule version de PHP qui tourne et celle a un seul fichier de configuration (par défaut /etc/php5/apache2/php.ini) pour tous nos sites même si ensuite on peut personnaliser chaque virtualhost. Avec PHP en mode CGI il faut bien comprendre que chaque VirtualHost a son propre PHP qui tourne (il pourrait même avoir un user/group dédié) du coup on peut avoir un fichier php.ini par instance donc VirtualHost.

Sur mon serveur j’essai de mettre à des endroits différents les fichiers sans intérêts (la compilation de PHP) de ceux qui sont personnalisés pour mes besoins (la configuration). Du coup je vais stocker les shell-scripts de mes sites dans /srv/web/fcgi/ et pour commencer je vais créer un répertoire “default” pour le shell-script et la configuration PHP que j’utiliserai par défaut pour mes sites et au besoin je pourrais créer un autre répertoire pour des sites plus spécifiques.


mkdir -p /srv/web/fcgi/default

Créer le shell-script “php52.sh” dans /srv/web/fcgi/default/

#!/bin/sh
export PHP_FCGI_CHILDREN=4
export PHP_FCGI_MAX_REQUESTS=200
export PHPRC="/srv/web/fcgi/default/php.ini"
exec /usr/local/php52/bin/php-cgi

Permettre l’exécution du shell-script

chmod +x /srv/web/fcgi/default/php52.sh

Copions le fichier “php.ini” fourni dans l’archive de php.net

cp /usr/src/php5.2/php-5.2.17/php.ini-dist /srv/web/fcgi/default/php.ini

Touche finale la configuration de Apache2, afin de désactiver le PHP en module (PHP5.3 normalement) et d’utiliser PHP en CGI il faut ajouter les lignes suivantes dans votre VirtualHost :


# supprimer PHP en module
php_admin_flag engine off
ScriptAlias /cgi-bin /srv/web/fcgi/default/
Action application/x-httpd-php /cgi-bin/php52.sh

Puis relancez votre Apache2 et vous aurez un PHP5.2 !

Apache-Tomcat

Environnement Java et Tomcat

commençons par le commencement.

Tous les outils Atlassian tournant en J2EE pas moyen d’y échapper il faut s’installer un environnement JAVA, il aurait été simple d’utiliser une seule instance de Tomcat mais Confluence et Jira ont besoin d’une instance chacun. A noter qu’il existe une version “standalone” de leurs outils qui permet d’éviter cette phase.

Pour ma part je vais utiliser Apache Tomcat 6 venant du site web et non des packages Debian c’est un choix de rapidité car je connais cette manière de faire puis je peux la reproduire sur des environment non Debian, l’installation de Java6 se fera de la même manière pour les mêmes raisons.

Installation JAVA6

cd /usr/src/

wget “http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u24-linux-x64.bin?BundledLineItemUUID=uLSJ_hCyMwIAAAEvJCgIRwLl&OrderID=k_2J_hCyUqcAAAEvFSgIRwLl&ProductID=oSKJ_hCwOlYAAAEtBcoADqmS&FileName=/jdk-6u24-linux-x64.bin” -O jdk-6u24-linux-x64.bin

chmod +x jdk-6u24-linux-x64.bin

./jdk-6u24-linux-x64.bin

mkdir -p /opt/oracle/

mv jdk1.6.0_24 /opt/oracle/jdk1.6.

Editer le fichier /etc/profile pour ajouter le PATH de JAVA et le JAVA_HOME

PATH=$PATH:/opt/oracle/jdk1.6/bin
export PATH
export JAVA_HOME=/opt/oracle/jdk1.6/

Afin de ne pas se reconnecter on peut aussi lancer directement la commande dans le SHELL en cours

export PATH=$PATH:/opt/oracle/jdk1.6/bin
export JAVA_HOME=/opt/oracle/jdk1.6/

Pour le tester :

java -version
java version “1.6.0_24”
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)

Installation Apache Tomcat 6

mkdir -p /opt/apache

cd /usr/src/

wget http://opensource.become.com/apache/tomcat/tomcat-6/v6.0.32/bin/apache-tomcat-6.0.32.tar.gz

cd /opt/apache

tar -zxvf /usr/src/apache-tomcat-6.0.32.tar.gz

mv apache-tomcat-6.0.32/ apache-tomcat-6.0

cd apache-tomcat-6.0/conf/

Editer le fichier tomcat-users.xml pour activer les utilisateurs et modifier le mot de passe TRES généric.
A noter aussi que par défaut il n’y a aucun accès pour l’interface “Manager”, faut donc ajouter le rôle “manager”. Voici mes lignes :

<role rolename=”tomcat”/>
<role rolename=”role1″/>
<role rolename=”manager”/>
<user username=”tomcat” password=”xxx” roles=”tomcat,manager”/>
<user username=”both” password=”xxx” roles=”tomcat,role1″/>
<user username=”role1″ password=”xxx” roles=”role1″/>

Maintenant on peut tester si Tomcat arrive à tourner.

cd ../bin/
./catalina.sh start

Le site est visible sur le port 8080 de l’ordinateur cible.

Pour tester si les modifications des accès sont prises en comptes aller dans “Tomcat Manager”.
En l’état nous pouvons utiliser Tomcat sous un utilisateur ou bien en root (pas bien !!!)

Tomcat multi-instance

Je sais d’avance que je ne pourrais pas installer JIRA et CONFLUENCE sur le même Tomcat, de ce fait il faut le configurer pour tourner sous plusieurs instances, voici ce que dit le RUNNING.txt

==================================================
Advanced Configuration – Multiple Tomcat Instances
==================================================

In many circumstances, it is desirable to have a single copy of a Tomcat
binary distribution shared among multiple users on the same server. To make
this possible, you can set the $CATALINA_BASE environment variable to the
directory that contains the files for your ‘personal’ Tomcat instance.

When you use $CATALINA_BASE, Tomcat will calculate all relative references for
files in the following directories based on the value of $CATALINA_BASE instead
of $CATALINA_HOME:

* bin – Only setenv.sh (*nix), setenv.bat (windows) and tomcat-juli.jar

* conf – Server configuration files (including server.xml)

* logs – Log and output files

* webapps – Automatically loaded web applications

* work – Temporary working directories for web applications

* temp – Directory used by the JVM for temporary files (java.io.tmpdir)

Note that by default Tomcat will first try to load classes and JARs from
$CATALINA_BASE/lib and then $CATALINA_HOME/lib. You can place instance specific
JARs and classes (e.g. JDBC drivers) in $CATALINA_BASE/lib whilst keeping the
standard Tomcat JARs in $CATALINA_HOME/lib.

If you do not set $CATALINA_BASE, $CATALINA_BASE will default to the same value
as $CATALINA_HOME, which means that the same directory is used for all relative
path resolutions.

Par contre pour le faire tourner sous plusieurs utilisateurs différents de manière simple il est proposé d’utiliser JSVC qui est livré dans le répertoire “bin/”. Il faut décompresser l’archive des commons-daemon. Attention il faut un compilateur C et “make” sur le serveur (aptitude install gcc make)

tar -zxvf commons-daemon-native.tar.gz
cd commons-daemon-1.0.5-native-src/unix
./configure
make

mv jsvc ../../.
mv ./samples/Tomcat5.sh ../../.
cd ../..
rm -Rf commons-daemon-1.0.5-native-src/

Pour bien faire la suite j’utilise un script nommé new-instance.sh, à la fin du script je change l’utilisateur par “atlassian” ce qui est spécifique à mon besoin, donc il faut adapter cette partie pour le faire fonctionner sous un autre utilisateur mais ne pas laisser en “root”.

#! /bin/bash

# $1 = rép
# $2 = instance name
# $3 = port
INSTANCE_NAME=$2
PORT=$3
mkdir -p $1

mkdir $1/{logs,bin,lib,conf,webapps,temp,work}

cp -rvp /opt/apache/apache-tomcat-6.0/bin/Tomcat5.sh $1/bin/.
cp -rvp /opt/apache/apache-tomcat-6.0/bin/tomcat-juli.jar $1/bin/.
cp -rvp /opt/apache/apache-tomcat-6.0/conf/* $1/conf/.

cd $1/bin
rpl “JAVA_HOME=/home2/java/j2sdk1.4.2_03” “JAVA_HOME=/opt/oracle/jdk1.6/” Tomcat5.sh
rpl “CATALINA_HOME=/home/tomcat5/tomcat5/jakarta-tomcat-5/build” “CATALINA_HOME=/opt/apache/apache-tomcat-6.0/” Tomcat5.sh
rpl “DAEMON_HOME=/home/jfclere/daemon” “DAEMON_HOME=/opt/apache/apache-tomcat-6.0/bin” Tomcat5.sh
rpl “TOMCAT_USER=tomcat5” “TOMCAT_USER=atlassian” Tomcat5.sh
rpl “TMP_DIR=/var/tmp” “TMP_DIR=/tmp” Tomcat5.sh
rpl “PID_FILE=/var/run/jsvc.pid” “PID_FILE=/var/run/tomcat-${INSTANCE_NAME}.pid” Tomcat5.sh
rpl “outfile \$CATALINA_HOME” “outfile \$CATALINA_BASE” Tomcat5.sh
rpl “CATALINA_BASE=/home/tomcat5/tomcat5/jakarta-tomcat-5/build” “CATALINA_BASE=$1” Tomcat5.sh
rpl “/src/native/unix/jsvc” “/jsvc” Tomcat5.sh
rpl ‘CATALINA_OPTS=”-Djava’ ‘#CATALINA_OPTS=”-Djava’ Tomcat5.sh
mv Tomcat5.sh tomcat.sh

cd $1/conf
rpl “8080” “80${PORT}1” server.xml
rpl “8443” “80${PORT}2” server.xml
rpl “8009” “80${PORT}3” server.xml

chown -R atlassian: $1

Pensez à rendre le script exécutable ! J’utilise l’application “rpl” qui n’est pas installé par défaut donc à ajouter “aptitude install rpl”.

chmod +x new-instance.sh

Avant de l’exéctuer je créé dans mon cas l’utilisateur atlassian

useradd –system atlassian

Création d’une instance

Maintenant je cré mon instance pour Confluence :

./new-instance.sh /srv/atlassian/confluence/tomcat confluence 9
/srv/atlassian/confluence/tomcat/bin/tomcat.sh start

L’interface répond mais est vide car je n’ajoute pas les applications livrées par défaut.

xen

Xen on Debian Squeeze

Occupation du week-end installer Xen4 sur 2 serveurs debian Squeeze.  Ces 2 serveurs sont chez OVH donc la phase d’installation Debian est automatisée.

Les serveurs sont équipés de disques durs SSD et SATA; le choix du RAID1 est assez limité vu qu’il doit être sur les disques SSD.

Partitionnement

J’ai quasiment gardé le partionnement initialement proposé, j’ai juste viré le /home et /data afin d’y mettre du LVM

avant

/dev/md1               10G  823M  8.7G   9% /
tmpfs                  12G     0   12G   0% /lib/init/rw
udev                   12G  164K   12G   1% /dev
tmpfs                  12G     0   12G   0% /dev/shm
/dev/md2               64G  180M   61G   1% /home
/dev/md0              1.3T  198M  1.3T   1% /data

après

/dev/md1 10G 823M 8.7G 9% /
tmpfs 12G 0 12G 0% /lib/init/rw
udev 12G 164K 12G 1% /dev
tmpfs 12G 0 12G 0% /dev/shm

Création LVM

Le serveur possède des disques durs de 2 technologies très différentes, ce qui va me permettre d’utiliser les SSD pour des clients importants ou ayant besoin d’une vitesse importante au niveau des accès disques; les autres clients iront sur les disques SATA. Au besoin je ferai quelques tests de SWAP sur SSD, je m’attends d’avance que ce soit très intéressant vu que beaucoup d’hébergeur font cela mais ensuite la question de l’intérêt par rapport au coût et l’espace de SSD disponible va se poser.

Attribution des disques en LVM

pvcreate /dev/md0
pvcreate /dev/md2

Création des groupes

vgcreate vgSATA1 /dev/md0
Volume group “vgSATA1” successfully created
vgcreate vgSSD1 /dev/md2
Volume group “vgSSD1” successfully created

…à venir

Installation Xen

aptitude install linux-image-xen-amd64 xen-tools xen-utils-4.0 xen-hypervisor-4.0-amd46

Pour que le bon kernel soit prit en compte il faut éditer le fichier /etc/default/grub
et modifier GRUB_DEFAULT=0 en GRUB_DEFAULT=1

afin que l’hyperviseur soit bien démarrer dans le GRUB il faut modifier l’ordre des fichiers

cd /etc/grub.d/
mv 10_linux 50_linux
update-grub2

Une fois les opérations effectué il faut redémarrer le serveur : reboot

Pour vérifier si le système en place est correct 2 commandes :
uname -a ne doit plus afficher ovh mais doit afficher xen

root@elio:~# uname -a
Linux elio.lookabox.com 2.6.32-5-xen-amd64 #1 SMP Wed Jan 12 05:46:49 UTC 2011 x86_64 GNU/Linux

ensuite la commande xm info doit afficher tout plein d’information comme ceci

root@elio:~# xm info
host : elio.lookabox.com
release : 2.6.32-5-xen-amd64
version : #1 SMP Wed Jan 12 05:46:49 UTC 2011
machine : x86_64
nr_cpus : 8
nr_nodes : 2
cores_per_socket : 4
threads_per_core : 1
cpu_mhz : 2000
hw_caps : bfebfbff:28100800:00000000:00001b40:009ce3bd:00000000:00000001:00000000
virt_caps : hvm hvm_directio
total_memory : 24566
free_memory : 1667
node_to_cpu : node0:0-3
node1:4-7
node_to_memory : node0:1667
node1:0
node_to_dma32_mem : node0:839
node1:0
max_node_id : 1
xen_major : 4
xen_minor : 0
xen_extra : .1
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler : credit
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : unavailable
xen_commandline : placeholder
cc_compiler : gcc version 4.4.5 (Debian 4.4.5-10)
cc_compile_by : waldi
cc_compile_domain : debian.org
cc_compile_date : Wed Jan 12 14:04:06 UTC 2011
xend_config_format : 4

Configuration Xen

xend-config.sxp

Avant de pouvoir créer des VMs il faut adapter quelques éléments de configuration.

Fichier /etc/xen/xend-config.sxp
Activer les logs et diminuer leur contenu, pour cela il faut décommenter les 2 lignes suivantes et remplacer WARN par DEBUG:

AVANT
—–snip here—–
#(logfile /var/log/xen/xend.log)
#(loglevel DEBUG)
—–snip here—–

APRES
—–snip here—–
(logfile /var/log/xen/xend.log)
(loglevel WARN)
—–snip here—–

Adapter l’interface réseau nécessaire , dans mon cas c’est eth0, pour cela ajouter la ligne suivante :

(network-script ‘network-bridge netdev=eth0’)

Modifions la mémoire minimum du dom0 en changeant 196 en 256 à la ligne suivante:

(dom0-min-mem 256)

au besoin il est possible de mettre plus si jamais vous faites tourner d’autres éléments.

Maintenant modifions le nombre de CPU disponible pour le dom0, je suis partant de ne pas avoir un seul CPU pour éviter les processus qui partent en vrille et bloc tout le serveur mais je ne suis pas non plus partant pour laisser tous les CPUs dispos à dom0, donc modification du 0 en 2 à la ligne suivante:

(dom0-cpus 2)

Malgré que par défaut VNC soit désactiver et c’est bien si l’on ne souhaite pas de console graphique, je préfère indiquer un mot de passe hasardeux si jamais quelqu’un venait à activer VNC, donc modification de la ligne suivante:

(vncpasswd ‘ipuhfiusdfbubfzbzffzzf’)

Configuration du clavier pour VNC au passage ainsi ça évitera de chercher le jour où ça servira, pour cela dé-commenter la ligne suivante

AVANT
#(keymap ‘en-us’)

APRES
(keymap ‘fr’)

Ajouter un maximum au logrotate de qemu

AVANT
#(qemu-dm-logrotate-count 10)

APRES
(qemu-dm-logrotate-count 10)

Dernière modification le temps nécessaire au démarrage et à l’arrêt d’une VM:

AVANT
#(device-create-timeout 100)
#(device-destroy-timeout 100)

APRES
(device-create-timeout 60)
(device-destroy-timeout 180)

xen-tools.conf

Afin de permettre une installation simplifiée des VM il existe un outil très pratique sous Debian xen-tools , afin que celui fonctionne simplement il faut lui adapter quelques paramètres en rapport avec les disques durs désirés, l’accès réseau, les dépôts et aussi les espaces par défaut de mémoire et disque.

Indiquer le groupe LVM désiré pour installer les disques de la VM, dans mon cas c’est vgSATA1 car je me réserve les disques SSD pour des VM avec un besoin spécifique.

AVANT
# lvm = vg0

APRES
lvm=vgSATA1

Je désire bien souvent des VMs de 10Gb ce qui donne un espace suffisant pour des tests, je mets peu de mémoire par défaut et une swap importante, par la suite soit je transférerai la SWAP sur le SSD ou bien j’augmente la mémoire. Attention de bien mettre l’option image à full si vous utilisez le LVM

AVANT
size = 4Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # Swap size
# noswap = 1 # Don’t use swap at all for the new system.
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = `xt-guess-suite-and-mirror –suite` # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.

APRES
size = 10Gb # Disk image size.
memory = 512Mb # Memory size
swap = 2Gb # Swap size
# noswap = 1 # Don’t use swap at all for the new system.
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = `xt-guess-suite-and-mirror –suite` # Default distribution to install.
image = full # Specify sparse vs. full disk images.

Chez OVH la gestion du réseau est un peu particulière du coup j’utilise le script ovhnet pour la configuration mais sinon vous pouvez spécifiez les informations par défaut de GATEWAY, NETMASK, BROADCAST dans mon cas je configure seulement le netmask :

netmask = 255.255.255.255

Si jamais vous avez un DHCP sur votre réseau n’hésitez pas à dé-commenter “dhcp = 1”.

Paramètre à ne pas oublier le serveur de DNS

nameserver = 213.186.33.99

Ajout du bridge à utiliser, il s’agit bien du nom du bridge et non de l’interface local mais dans mon cas son nom est eth0

AVANT
# bridge = xendmz

APRES
bridge = eth0

Si vous avez une connexion réseau un peu lente alors ne faite pas l’action suivante

AVANT
# cache = no

APRES
cache = no

Il est possible d’indiquer le mot de passe que l’on désire ou bien laisser xen-tools en générer un pour vous, celui-ci restera dans un fichier de log sur le dom0 pour information, pour ma part je choisis la génération par simplicité (toujours chiant de trouver un password compliqué)

AVANT
# genpass = 0
# genpass_len = 8

APRES
genpass = 1
genpass_len = 12

A l’inverse si vous voulez indiquer le password lors de l’installation voici l’option à mettre (dans mon cas j’ai mit 0 pour bien forcer la chose !!!)

AVANT
# passwd = 1

APRES
passwd = 1

Et si vous souhaitez importer les comptes de dom0 dans la nouvelle VM dé-commenter ceci (pareil là pour moi ce sera 0)

AVANT
# accounts = 1

APRES
accounts = 1

Par expérience j’évite de laisser les “defaults” sur des options importantes donc je dé-commente les lignes suivantes :

serial_device = hvc0 #default
disk_device = xvda #default
output = /etc/xen
extension = .cfg
nohosts = 0 # default
copyhosts = 0 # default

Et voilà la configuration est terminée , il ne reste plus qu’à lancer l’installation d’une VM pour tester, dans mon cas j’utilise le rôle “ovhnet” créé plus haut pour ne pas devoir me coltiner la configuration ensuite.

xen-create-image \
–lvm=vgSATA1 \
–memory=2Gb \
–role=ovhnet \
–swap=2Gb \
–vcpus=2 \
–arch=amd64 \
–dist=squeeze \
–broadcast=1.5.6.65 \
–netmask=255.255.255.255 \
–ip=1.5.6.65 \
–mac=02:32:34:35:36:37 \
–size=10Gb \
–fs=ext4 \
–pygrub \
–hooks=1 \
–hostname=wilma.bayart.name

Voici la console de l’installation:

WARNING: No gateway address specified!

General Information
——————–
Hostname : wilma.bayart.name
Distribution : squeeze
Mirror : http://mirror.ovh.net/debian/
Partitions : swap 2Gb (swap)
/ 50Gb (ext4)
Image type : full
Memory size : 2Gb
Kernel path : /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path : /boot/initrd.img-2.6.32-5-xen-amd64

Networking Information
———————-
IP Address 1 : 1.5.6.65 [MAC: 02:32:34:35:36:37]
Netmask : 255.255.255.255
Broadcast : 1.5.6.65
Nameserver : 213.186.33.99

Creating swap on /dev/vgSATA1/wilma-swap
Done

Creating ext4 filesystem on /dev/vgSATA1/wilma-disk
Done
Installation method: debootstrap
Done

Running hooks
Done

Role: ovhnet
File: /etc/xen-tools/role.d/ovhnet
Role script completed.

Creating Xen configuration file
Done
Setting up root password
Generating a password for the new guest.
All done

Logfile produced at:
/var/log/xen-tools/wilma.log

Installation Summary
———————
Hostname : wilma.bayart.name
Distribution : squeeze
IP-Address(es) : 1.5.6.65
RSA Fingerprint : c9:d2:96:9c:c8:5f:1c:80:ce:ef:19:2f:00:16:26:bc
Root Password : d8NcRKzx5upV

Évidemment ceci était pour l’exemple donc le password n’a pas de suite sur ce serveur.

Bonne virtualisation

Problème

Can’t find hypervisor information

Si vous rencontrez ce problème

root@elio:~# xm info
WARNING! Can’t find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?
root@elio:~#

alors vous avez un soucis dans la configuration de GRUB2 pour corriger cela

cd /etc/grub.d/
mv 10_linux 50_linux
update-grub2
reboot

Tips

Interface réseau

Afin de pouvoir augmenter le nombre d’interfaces “loopback” (virtuelles) sur le linux il faut modifier le fichier /etc/modules (chez moi une seule ligne contenant “loop”) pour y mettre

loop max_loop=128

Configuration Réseau pour OVH

Chez OVH la couche réseau est surveillée de manière assez stricte sous peine de se voir couper du réseau OVH; du coup j’ai ajouté un petit script qui me permet de générer une VM conformes aux exigences de OVH et ceux directement à la création : /etc/xen-tools/role.d/ovhnet

#!/bin/sh
#
# This role helps to customize guest’s /etc/network/interfaces
#

prefix=$1

#
# Source our common functions – this will let us install a Debian package.
#
if [ -e /usr/lib/xen-tools/common.sh ]; then
. /usr/lib/xen-tools/common.sh
else
echo “Installation problem”
fi

#
# Log our start
#
logMessage Script $0 starting

#
# Create Guest’s interfaces (see WARNING before) :
#
DOM0IP=`ip addr show dev eth0 | grep “inet “|awk ‘BEGIN {FS=” “}{print $2;}’|cut -d / -f 1`

cat <>${prefix}/etc/network/interfaces
post-up ip route add $DOM0IP dev eth0
post-up ip route add default via $DOM0IP
OVHNET_CONF_EOF

grep -vi gateway ${prefix}/etc/network/interfaces > ${prefix}/etc/network/interfaces.tmp
mv ${prefix}/etc/network/interfaces.tmp ${prefix}/etc/network/interfaces

#
# Log our finish
#
logMessage Script $0 finished

Debian Etch

Il est tout à fait possible d’installer une version Etch de Debian même si cela est vraiment déconseillé niveau sécurité. Seul bémol la création du mot de passe lors du “xen-create-image” car entre Etch et Squeeze le format dans /etc/shadow a changé, il faut donc modifier le fichier /etc/shadow de la VM Etch.

Pour le savoir rapidement $1$ = MD5 et $6$ = SHA512.

Divers


Merci

    Azerttyu pour les fautes d’orthographe