« L'hyperviseur Xen sous Debian Wheezy » : différence entre les versions

Aller à la navigation Aller à la recherche
m
 
(21 versions intermédiaires par le même utilisateur non affichées)
Ligne 162 : Ligne 162 :
<pre>
<pre>
$ mount /dev/sda1 /mnt
$ mount /dev/sda1 /mnt
$ debootstrap --arch=amd64 squeeze /mnt
$ debootstrap --arch=amd64 wheezy /mnt
...
...
I: Base system installed successfully
I: Base system installed successfully
Ligne 179 : Ligne 179 :
Editez le fichier <code>/etc/apt/sources.list</code> :
Editez le fichier <code>/etc/apt/sources.list</code> :
<pre>
<pre>
deb http://ftp.fr.debian.org/debian squeeze main contrib non-free
deb http://ftp.fr.debian.org/debian wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.fr.debian.org/debian wheezy main contrib non-free


#Sec
#Sec
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free


#anciennement debian-volatile
#anciennement debian-volatile
deb http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
deb http://ftp.fr.debian.org/debian wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian squeeze-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian wheezy-updates main contrib non-free
</pre>
</pre>


Ligne 312 : Ligne 312 :
Vérifier la présence du fichier <code>/etc/xen/scripts/hotplugpath.sh</code>. S'il n'existe pas, créez le :
Vérifier la présence du fichier <code>/etc/xen/scripts/hotplugpath.sh</code>. S'il n'existe pas, créez le :
<pre>touch /etc/xen/scripts/hotplugpath.sh</pre>
<pre>touch /etc/xen/scripts/hotplugpath.sh</pre>
==désactiver le balooning==
Par défaut, l'installation debian de xen alloue de manière dynamique la mémoire allouée à l'hyperviseur (au dom0). Sur un host de virtualisation xen, il est cependant préférable d'allouer de manière fixe de la mémoire au dom0.
Modifier la ligne <code>GRUB_CMDLINE_XEN</code> dans <code>/etc/default/grub</code> :
<pre>
GRUB_CMDLINE_XEN="dom0_mem=512M"
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=512M"
</pre>
Puis mettez à jour la configuration de grub :
<pre>update-grub</pre>
Modifiez ensuite les lignes suivantes dans <code>/etc/xen/xend-config.sxp</code> :
<pre>
(dom0-min-mem 512)
(enable-dom0-ballooning no)
</pre>
Il faut bien évidemment rebooter pour appliquer ces paramètres.
==Forcer l'arrêt des VMs (shutdown) lors du reboot de xen==
Par défaut, si l'hyperviseur reboot, Xen sauvegarde l'état des VMs plutôt que de les shutdown proprement. Si vous voulez vous affranchir de ce comportement, modifiez <code>/etc/default/xendomains</code> :
<pre>
XENDOMAINS_RESTORE=false
XENDOMAINS_SAVE=""
</pre>


=Configuration réseau=
=Configuration réseau=
Ligne 321 : Ligne 348 :
<pre>
<pre>
(vif-script vif-bridge)
(vif-script vif-bridge)
(network-script 'network-bridge bridge=br0')
</pre>
</pre>


Par défaut, xen utilisera l'interface eth0. Si vous souhaitez utiliser une autre interface réseau (eth1 par exemple) utilisez :
Editez le fichier <code>/etc/network/interfaces</code> de cette façon :
<pre>
<pre>
(vif-script vif-bridge)
auto lo
iface lo inet loopback
 
auto br0
iface br0 inet static
        address 91.121.117.116
        netmask 255.255.255.0
        network 91.121.117.0
        broadcast 91.121.117.255
        gateway 91.121.117.254
        bridge_ports eth0
</pre>
</pre>


après vos modifications, redémarrez le démon xend :
Il faudra ensuite rebooter
<pre>/etc/init.d/xend restart</pre>
<pre>reboot</pre>
 
===Création du bridge===
Editez le fichier <code>/etc/network/interfaces</code> de cette façon :


==NAT==
==NAT==
Ligne 367 : Ligne 402 :
=Configuration de Xen-Tools pour créer automatiquement des machines virtuelles debian=
=Configuration de Xen-Tools pour créer automatiquement des machines virtuelles debian=


Par défaut sous debian squeeze, le fichier <code>/etc/xen-tools/xen-tools.conf</code> est adapté à la création de VMs debian squeeze.
Par défaut sous debian wheezy, le fichier <code>/etc/xen-tools/xen-tools.conf</code> est adapté à la création de VMs debian wheezy.


Notre configuration permettra :
Notre configuration permettra :
* de créer les partitions des VMs sur le LVM
* de créer les partitions des VMs sur le LVM
* d'utiliser debootstrap pour créer des VMs vierges sous debian squeeze
* d'utiliser debootstrap pour créer des VMs vierges sous debian wheezy
* de configurer automatiquement l'ip sur la VM
* de configurer automatiquement l'ip sur la VM


Ligne 384 : Ligne 419 :
netmask    = 255.255.255.0
netmask    = 255.255.255.0
broadcast  = IP-du.dom0.255
broadcast  = IP-du.dom0.255
bridge = br0
</pre>
</pre>


Ligne 401 : Ligne 437 :
*<code>swap</code> : défini la taille du swap par défaut pour les VMs
*<code>swap</code> : défini la taille du swap par défaut pour les VMs
*<code>fs</code> : défini le système de fichier à utiliser pour les VMs. Généralement ext3 ou ext4.
*<code>fs</code> : défini le système de fichier à utiliser pour les VMs. Généralement ext3 ou ext4.
*<code>image</code> : défini s'il faut utiliser des images complètes (<code>full</code>) ou a taille variable (<code>sparse</code>) pour les VMs.
*<code>image</code> : défini s'il faut utiliser des images complètes (<code>full</code>) ou a taille variable (<code>sparse</code>) pour les VMs. <code>full</code> donnera les meilleurs performances disque.
*<code>install-method</code> : défini la méthode d'installation par défaut pour les VMs. Les choix possibles sont :
*<code>install-method</code> : défini la méthode d'installation par défaut pour les VMs. Les choix possibles sont :
**<code>debootstrap</code>
**<code>debootstrap</code>
Ligne 529 : Ligne 565 :
#
#
#
#
installDebianPackage ${prefix} locales #already installed in debian-squeeze domU
installDebianPackage ${prefix} locales #already installed in debian-wheezy domU
installDebianPackage ${prefix} ntp
installDebianPackage ${prefix} ntp
installDebianPackage ${prefix} console-data
installDebianPackage ${prefix} console-data
Ligne 594 : Ligne 630 :
#
#


gw=`cat /etc/xen-tools/xen-tools.conf | grep gateway`
gw=`cat /etc/xen-tools/xen-tools.conf | grep "gateway ="`
if [ ! ${gw:0:1} = "#" ]; then
if [ ! ${gw:0:1} = "#" ]; then
         gateway=`echo $gw | cut -f 2 -d "="`
         gateway=`echo $gw | cut -f 2 -d "="`
Ligne 600 : Ligne 636 :
         echo up route add default gw $gateway >> ${prefix}/etc/network/interfaces
         echo up route add default gw $gateway >> ${prefix}/etc/network/interfaces
fi
fi
sed -i -e 's/gateway/#gateway/g' ${prefix}/etc/network/interfaces


#
#
Ligne 607 : Ligne 644 :
#
#
#
#
echo '
#! /bin/sh
### BEGIN INIT INFO
# Provides:            sshguard
# Required-Start:      $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:       
# Short-Description:    sshguard
### END INIT INFO
case "$1" in
        start)
                iptables -N sshguard
                ip6tables -N sshguard
                iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                tail -n0 -F /var/log/auth.log | /usr/sbin/sshguard -a 2 -p 1800 -w /etc/sshguard_whitelist &
        ;;
        stop)
                killall /usr/sbin/sshguard
                iptables -D INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                ip6tables -D INPUT -m multiport -p tcp --destination-ports 21,22,110,143,80,443 -j sshguard
                iptables -X sshguard
                ip6tables -X sshguard
        ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        ;;
esac' > ${prefix}/etc/init.d/sshguard
chmod +x ${prefix}/etc/init.d/sshguard
for ip in `ifconfig | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1`; do
for ip in `ifconfig | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1`; do
         if [ ! $ip = "127.0.0.1" ]; then
         if [ ! $ip = "127.0.0.1" ]; then
Ligne 649 : Ligne 652 :
         echo $ip >> ${prefix}/etc/sshguard_whitelist
         echo $ip >> ${prefix}/etc/sshguard_whitelist
done
done
cp /etc/default/sshguard ${prefix}/etc/default/


chroot ${prefix} /sbin/insserv sshguard
#
#
#  Log our finish
#  Log our finish
Ligne 659 : Ligne 662 :


N'oubliez pas de rendre ce fichier exécutable :
N'oubliez pas de rendre ce fichier exécutable :
<pre>chmod +x /etc/xen-tools/main</pre>
<pre>chmod +x /etc/xen-tools/role.d/main</pre>


=Création de votre première VM=
=Création de votre première VM=
Ligne 677 : Ligne 680 :
Voici un autre exemple plus complet détaillant la création d'une VM ubuntu
Voici un autre exemple plus complet détaillant la création d'une VM ubuntu
<pre>
<pre>
xen-create-image --debootstrap --dir=/home/xen --size=10Gb --memory=512Mb --fs=ext3 \  
xen-create-image --size=10Gb --memory=512Mb --fs=ext3 \  
--dist=natty --hostname=vm1.domain.tld --ip=<IP> --netmask=255.255.255.0 --swap=1024Mb \
--dist=natty --hostname=vm1.domain.tld --ip=<IP> --netmask=255.255.255.0 --swap=1024Mb \
--arch=amd64 --kernel=/boot/vmlinuz-2.6.32.5-xen-amd64 --mirror=http://archive.ubuntu.com/ubuntu/ --passwd --role main
--arch=amd64 --kernel=/boot/vmlinuz-2.6.32.5-xen-amd64 --mirror=http://archive.ubuntu.com/ubuntu/ --passwd --role main
Ligne 728 : Ligne 731 :
Commencez par éditer le fichier <code>/etc/network/interfaces</code>
Commencez par éditer le fichier <code>/etc/network/interfaces</code>
<pre>
<pre>
auto dummy0
auto br1
iface dummy0 inet static
iface br1 inet static
         address 172.16.16.1
         address 192.168.10.1
         broadcast 172.16.16.255
         broadcast 192.168.10.255
         netmask 255.255.255.0
         netmask 255.255.255.0
        bridge_ports none
</pre>
</pre>


Puis activez l'interface :
Puis activez l'interface :
<pre>ifup dummy0</pre>
<pre>ifup br1</pre>


Créez ensuite le fichier <code>/etc/xen/scripts/my-network-bridge</code> contenant :
Créez ensuite le fichier <code>/etc/xen/scripts/my-network-bridge</code> contenant :
<pre>
<pre>
#!/bin/sh
#!/bin/sh
/etc/xen/scripts/network-bridge "$@" netdev=eth0
/etc/xen/scripts/network-bridge "$@" netdev=br0
/etc/xen/scripts/network-bridge "$@" netdev=dummy0
/etc/xen/scripts/network-bridge "$@" netdev=br1
</pre>
</pre>


Ligne 753 : Ligne 757 :
Ce script aura comme conséquence :
Ce script aura comme conséquence :
* créer le bridge classique de xen (celui qui était lancé par <code>(network-script network-bridge)</code>
* créer le bridge classique de xen (celui qui était lancé par <code>(network-script network-bridge)</code>
* créer le bridge dummy0 pour notre interface interne
* créer le bridge br0 pour notre interface interne


Il faut ensuite relancer xend :
Il faut ensuite relancer xend :
Ligne 764 : Ligne 768 :
Par exemple pour la vm <code>vm1.domain.tld</code> éditez le fichier <code>/etc/xen/vm1.domain.tld.cfg</code>. Modifiez la ligne <code>vif</code> de cette manière :
Par exemple pour la vm <code>vm1.domain.tld</code> éditez le fichier <code>/etc/xen/vm1.domain.tld.cfg</code>. Modifiez la ligne <code>vif</code> de cette manière :
<pre>
<pre>
vif  = [ 'ip=192.168.0.1,bridge=eth0,mac=00:16:3E:A3:F1:5A','ip=172.16.16.2,bridge=dummy0,mac=00:16:3E:A3:F1:07' ]
vif  = [ 'ip=192.168.0.1,bridge=br0,mac=00:16:3E:A3:F1:5A','ip=172.16.16.2,bridge=br1,mac=00:16:3E:A3:F1:07' ]
</pre>
</pre>


Après redémarrage, la VM aura désormais deux interfaces réseaux :
Après redémarrage, la VM aura désormais deux interfaces réseaux :
* eth0 bridgé sur l'interface eth0 du dom0 (le réseau public)
* eth0 bridgé sur l'interface br0 du dom0 (le réseau public)
* eth1 bridge sur l'interface dummy0 du dom0 (le réseau interne)
* eth1 bridge sur l'interface br1 du dom0 (le réseau interne)


Si votre VM est sous debian, il faudra ajouter la configuration de eth1 dans <code>/etc/network/interfaces</code> (sur la vm!) :
Si votre VM est sous debian, il faudra ajouter la configuration de eth1 dans <code>/etc/network/interfaces</code> (sur la vm!) :
Ligne 775 : Ligne 779 :
auto eth1
auto eth1
iface eth1 inet static
iface eth1 inet static
  address 172.16.16.2
  address 192.168.10.2
  netmask 255.255.255.0
  netmask 255.255.255.0
</pre>
</pre>
4 203

modifications

Menu de navigation