#Installation d'un Hyperviseur KVM sur Centos6
{{INLINETOC}}
## Installation du socle
Procéder à l'[installation d'un socle dgfip](/centos:socle-install)
## Installation d'Apache
### Activation des dépôts EPEL
EPEL : Extra Packages for Enterprise Linux fournit un ensemble de paquets supplémentaires pour Red Hat Enterprise Linux (RHEL), CentOS et Scientific Linux (SL), Oracle Linux (OL).
Les paquets EPEL sont généralement basés sur leurs homologues Fedora et ne seront jamais en conflit avec ou remplacent les paquets dans les distributions de base Enterprise Linux.
** Télécharger puis installer le rpm epel-release**
```
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum -y install remi-release-6.rpm epel-release-6-8.noarch.rpm
```
**Activer les nouveaux dépôts **
Dans /etc/yum.repos.d
Editer le fichier epel.repo pour s'assurer que la première section [epel] est activée (enablet=1):
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Remi Collet maintient une grande collection de RPMS, y compris les dernières versions de PHP, etc. Il s'agit d'une collection de repos et l'utilisation de la série -safe garantira que rien de la base de CentOS Linux distro n'est écrasé ou remplacé. Pour installer les repos de REMI télécharger le rpm remi-release, puis installer:\\ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm\\ yum -y install remi-release-6.rpm epel-release-6-8.noarch.rpm\\ \\ Editer le fichier remi.repo pour s'assurer que la première section [remi] est activée (enabled=1):\\ \\ `[remi]`\\ `name=Les RPM de remi pour Enterprise Linux 6 - $basearch`\\ `#baseurl=http://rpms.famillecollet.com/enterprise/6/remi/$basearch/`\\ `mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror`\\ `enabled=1`\\ `gpgcheck=1`\\ `gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi`
**Désactiver le cache **
Dans /etc/yum.repos.d/ éditer le fichier socle-dgfip-local-rpms.repo pour désactiver le cache (enabled=0) :
[socle-dgfip-local-rpms]
name=socle dgfip local rpms
baseurl=file:///var/cache/master/rpms/
gpgcheck=0
enabled=0
### Activer les dépots officiels de CEntos
Dans /etc/yum.repos.d/ éditer le fichier CentOS-Base.repo pour activer tous les repos (enabled=1) :
[base]
....
enabled=1
....
[updates]
....
enabled=1
....
[extras]
....
enabled=1
....
[centosplus]
....
enabled=1
....
[contrib]
....
enabled=1
....
**Installer la clé GPG des repos Centos **
$ wget https://centos.org/keys/RPM-GPG-KEY-CentOS-6
$ rpm --import RPM-GPG-KEY-CentOS-6
**Faire un update **
$ yum update
### Installer apache et php
En fonction de la version de PHP requise il peut être nécessaire d'installer une version plus récente.
Désinstaller la version précédente
$ yum remove php php-common php-agent
Vérifier que les dépçots epel et remis soient activés
Un rechargement du cache yum doit faire apparaître les repos epel et remi
yum repolist
Modules complémentaires chargés : fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink 21 kB 00:00
* base: centos.crazyfrogs.org
* centosplus: centos.mirror.ate.info
* contrib: centos.mirrors.ovh.net
* epel: epel.besthosting.ua
* extras: centos.crazyfrogs.org
* remi: fr2.rpmfind.net
* remi-safe: fr2.rpmfind.net
* updates: centos.mirror.ate.info
Installer php et ses dépendances
$ yum install httpd php mysql-server php-mysql pam_mysql vsftpd
## Configuration du serveur
Activer short_open_tag dans /etc/php.ini
short_open_tag = on
Si nécessaire modifier le port d'écoute du serveur
dans /etc/httpd/conf/httpd.conf
Listen 8080
Redémarrer le service httpd
$ service httpd restart
# WebVirtMgr
## Installation
### Installation de KVM libvirt
#### Installation des paquets
$ yum -y install kvm libvirt
#### Activation du démon libvirtd
Dé commenter dans /etc/sysconfig/libvirtd la ligne
LIBVIRTD_ARGS="--listen"
Pour les serveurs ne disposant pas d'un CA valide, décommenter la ligne lsiten_tls=0 dans /etc/libvirt/libvirtd.conf :
# This is enabled by default, uncomment this to disable it
listen_tls = 0
#### Démarrer le démon libvirtd
$ service libvirtd start
Ajouter les utilisateurs et leurs mots de passe avec la commande saslpasswd2. Lors de l'exécution de cette commande, il est important de préciser que le nom de l'application est libvirt. A titre d'exemple, pour ajouter un utilisateur fred :
$ saslpasswd2 -a libvirt fred
Password: xxxxxx
Again (for verification): xxxxxx
####Configurer le démarrage automatique de libvirt
$ chkconfig libvirtd on; shutdown -r now
### Installation de nginx
#### Installer les prérequis
Certains prérequis ne sont disponibles que sur les dépôts EPEL. Vérifier la présence de ceux-ci par yum update
Si EPEL n’apparaît pas activer les dépôts d'EPEL
$ yum install -y git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
#### Installation de webvirtmgr
Télécharger la dernière release
$ git clone https://github.com/retspen/webvirtmgr.git
Installer les prérequis de python et paramétrer Django
$ cd webvirtmgr
$ pip install -r requirements.txt
$ ./manage.py syncdb
$ ./manage.py collectstatic
Créer un superuser
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes (Put: yes)
Username (Leave blank to use 'admin'): admin (Put: your username or login)
E-mail address: username@domain.local (Put: your email)
Password: xxxxxx (Put: your password)
Password (again): xxxxxx (Put: confirm password)
Superuser created successfully.
Il est possible de définir des superuser supplémentaires
$ ./manage.py createsuperuser
### Paramétrage de Nginx
Habituellement WebVirtMgr est uniquement disponible à partir de localhost sur le port 8000. Cette étape mettra WebVirtMgr à la disposition de tout le monde sur le port 80. Le webinterface est également protégé (pas https), ce qui signifie que tout le monde entre vous et le serveur (personnes sur le même wifi, routeur local, votre fournisseur, le fournisseur de serveurs, backbones etc.) peut voir vos informations de connexion en texte clair!
Au lieu de cela, vous pouvez également sauter cette étape complètement. En redirigeant simplement le port 8000 sur votre machine locale via SSH. Cela est beaucoup plus sûr parce WebVirtMgr ne sont pas disponibles au public plus et vous ne pouvez y accéder via une connexion cryptée.
ssh user@server:port -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080
#### Déplacer le dossier webvirtmgr dans /var/www
$ cd ..
$ mv webvirtmgr /var/www/
$ chown -R nginx:nginx /var/www/webvirtmgr
#### Créer webvirtmgr.conf
dans /etc/nginx/conf.d:
server {
listen 80 default_server;
server_name $hostname;
#access_log /var/log/nginx/webvirtmgr_access_log;
location /static/ {
root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var
expires max;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
client_max_body_size 1024M; # Set higher depending on your needs
}
}
#### Invalider l'ancien bloc server
soit en commentant les lignes du bloc dans le fichier /etc/nginx/conf.d/default.conf
soit directement en modifiant l'extension du fichier default.conf
Relancer le service nginx
$ service nginx restart
###Configuration
Editer le fichier /etc/supervisord.conf
Ajouter les lignes suivantes
[program:webvirtmgr]
command=/usr/bin/python /srv/www/webvirtmgr/manage.py run_gunicorn -c /srv/www/webvirtmgr/conf/gunicorn.conf.py
directory=/srv/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr.log
redirect_stderr=true
user=nginx
[program:webvirtmgri-console]
command=/usr/bin/python /srv/www/webvirtmgr/console/webvirtmgr-console
directory=/var/www/webvirtmgr
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/webvirtmgr-console.log
redirect_stderr=true
user=nginx
Redémarrer le démon
$ service supervisord restart
Tester la connection
Avant d'ajouter l'adresse IP de votre serveur dans le centre de contrôle effectuer le test suivant
virsh -c qemu+tcp://IP_address/system nodeinfo
------------------------------------------------------------------------------
Please enter your authentication name: fred
Please enter your password: xxxxxx
CPU model: x86_64
CPU(s): 2
CPU frequency: 2611 MHz
CPU socket(s): 1
Core(s) per socket: 2
Thread(s) per core: 1
NUMA cell(s): 1
Memory size: 2019260 kB
Activation de l'ip forwarding
$ sed -i 's/^ (net.ipv4.ip_forward = ).*/1 1/' /etc/sysctl.conf; sysctl -p
Configurer le Firewall
Ouvrir l'accès des ports libvirt
$ iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 16509 -j ACCEPT
# Open Vswitch
## Installation du module du noyau
CentOS 6 fournit déjà un module openvswitch dans le noyau (kernel) il n'y a donc pas besoin de construire et installer openvswitch-kmod.
Pour s'en assurer taper la commande
$ modinfo openvswitch
Qui doit retourner la version du module embarqué
filename: /lib/modules/2.6.32-642.4.2.el6.x86_64/kernel/net/openvswitch/openvswitch.ko
license: GPL
description: Open vSwitch switching datapath
srcversion: 00938868C288DBF055E30F3
depends: libcrc32c,vxlan
vermagic: 2.6.32-642.4.2.el6.x86_64 SMP mod_unload modversions
###Construction du Module openvswitch du noyau
Si tel n'est pas le cas il faut construire le module du noyau
#### Installer les outils de coonfection d'un rpm
$ yum groupinstall "Development Tools" -y
$ yum install rpmdevtools openssl-devel kernel-devel gcc redhat-rpm-config -y
#### Créer l'utilisateur ovswitch
$ adduser ovswitch
#### Télécharger openvswitch-2.3.0
$ su ovswitch -c "wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz -O /home/ovswitch/openvswitch-2.3.0.tar.gz"
$ su ovswitch -c "cd ~ && tar xvfz openvswitch-2.3.0.tar.gz"
#### Préparer l'environnement rpmbuild
$ su ovswitch -c "mkdir -p /home/ovswitch/rpmbuild/SOURCES"
$ su ovswitch -c "cp /home/ovswitch/openvswitch-2.3.0.tar.gz /home/ovswitch/rpmbuild/SOURCES/"
$ su ovswitch -c "cp /home/ovswitch/openvswitch-2.3.0/rhel/openvswitch-kmod.files /home/ovswitch/rpmbuild/SOURCES/"
#### Préparer le build sans le module kmod
$ su ovswitch -c "sed 's/openvswitch-kmod, //g' /home/ovswitch/openvswitch-2.3.0/rhel/openvswitch.spec > /home/ovswitch/openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec"
#### Construire le rpm
$ su ovswitch -c "rpmbuild -bb /home/ovswitch/openvswitch-2.3.0/rhel/openvswitch_no_kmod.spec"
### Installer le module
$ yum install openvswitch
ou
$ yum localinstall -y /home/ovswitch/rpmbuild/RPMS/x86_64/openvswitch-2.3.0-1.x86_64.rpm
### Activer le service
$ modprobe openvswitch
$ /etc/init.d/openvswitch start
##Installation
### Installer les pré-requis
$ yum groupinstall "Development Tools" -y
$ yum install rpmdevtools openssl-devel kernel-devel gcc redhat-rpm-config -y
### Créer l'utilisateur ovswitch
$ adduser ovswitch
### Installer OpenVswitch
Télécharger openvswitch-2.3.0
$ su ovswitch -c "wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz -O /home/ovswitch/openvswitch-2.3.0.tar.gz"
$ su ovswitch -c "cd ~ && tar xvfz openvswitch-2.3.0.tar.gz"
Préparer l'environnement rpmbuild
$ su ovswitch -c "mkdir -p /home/ovswitch/rpmbuild/SOURCES"
$ su ovswitch -c "cp /home/ovswitch/openvswitch-2.3.0.tar.gz /home/ovswitch/rpmbuild/SOURCES/"
$ su ovswitch -c "cp /home/ovswitch/openvswitch-2.3.0/rhel/openvswitch-kmod.files /home/ovswitch/rpmbuild/SOURCES/"
## Configuration
### Créer les interfaces dans ovs
#### Créer les ponts
$ ovs-vsctl add-br br-int
$ ovs-vsctl add-br br-ex
#### Ajouter les interfaces physiques
$ ovs-vsctl add-port br-ex eth0
### Adapter la configuration Network du serveur
#### Créer l'interface ifcfg-br-ex
$ vi /etc/sysconfig/network-scripts/ifcfg-br-ex
En y reportant IPADDR , NETMASK et GATEWAY de ifcfg-eth0
DEVICE=br-ex
ONBOOT=yes
BOOTPROTO=none
IPADDR=xx.xx.xxx.xxx
NETMASK=255.255.255.0
GATEWAY=xx.xx.xxx.x
#### Editer l'inetreface ifcfg-eth0
$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
Retirer IPADDR, NETMASK, GATEWAY
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
PROMISC=yes
#### Redémarrer le service réseau
$ service network restart