Installation d'un hôte sous CentOS 5 pour héberger des machines virtuelles

Configuration des dépôts

Configurer les dépôts RPMForge, EPEL, ATRpms, fws (voir cette page)

Installation des outils de base

Certains outils sont indispensables

yum --enablerepo=rpmforge install htop screen strace

Installation des outils de virtualisation

yum --enablerepo=epel --enablerepo=fws install virt-stack

Pour avoir les dernières versions:

yum --enablerepo=epel --enablerepo=fws --enablerepo=fws-testing install virt-stack

Configuration de l'interface "interne" en mode bridge

Pour pouvoir connecter les VM sur le réseau local (ou les réseau locaux à l'hôte physique, il peut s'agir de DMZ, ou n'importe quel sous-réseau connecté à l'hôte physique), il faut que ces interfaces fassent partie d'un bridge (=switch virtuel)

cd /etc/sysconfig/network-scripts
cat <<EOF > ifcfg-eth0
DEVICE=eth0
HWADDR=00:16:76:D6:C9:45
ONBOOT=yes
BRIDGE=br0
EOF

En adaptant l'adresse mac (ici 00:16:76:D6:C9:45)

Pour un bridge configuré via DHCP:

cat <<EOF > ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
EOF

Pour une configuration en IP fixe

cat <<EOF > ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.7.2
NETMASK=255.255.255.0
BROADCAST=192.168.7.255
NETWORK=192.168.7.0
ONBOOT=yes
DELAY=0
EOF

Configuration de libvirt

Déplacez le fichier de configuration par défaut. Il est conseillé de le conserver car il est très commenté

cd /etc/libvirt
mv libvirtd.conf libvirtd.conf.default
cat <<EOF > libvirtd.conf
listen_tls = 0
unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"
log_level = 1
log_filters="2:libvirt 1:qemu 2:util"
log_outputs="2:file:/var/log/libvirt/daemon.log"
auth_unix_ro = "none"
auth_unix_rw = "none"
EOF
mv qemu.conf qemu.conf.default
cat <<EOF > qemu.conf
user = "qemu"
group = "kvm"
save_image_format = "lzop"
mac_filter = 0
EOF

Connexion distante à libvirt

Le plus simple est d'utiliser un tunnel SSH. Pour cela, nous allons utiliser un compte avec des privilèges réduits:

Création d'un utilisateur aux privilèges réduits

groupadd libvirt
useradd -c 'Firewall Services' -m -d /home/fws -s /bin/bash fws
usermod -a -G libvirt fws

Mettre en place une authentification SSH par clef (sans mot de passe)

su - fws
cd
mkdir -p .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

Puis placer votre clef publique dans le fichier authorized_keys

Démarrage auto de libvirt

Le démon libvirt doit démarrer automatiquement:

chkconfig libvirtd on chkconfig ksmd on

Monitoring

Le monitoring sera assuré par Zabbix. Un proxy sera installé sur la machine physique pour pouvoir remonter les info de toutes les machines virtuelles

yum --enablerepo=rpmforge --enablerepo=fws install zabbix-agent zabbix-proxy-sqlite3 --exclude=*i386