« Proxmox et OpenVZ » : différence entre les versions

Aller à la navigation Aller à la recherche
7 770 octets ajoutés ,  16 mai 2015
aucun résumé des modifications
Aucun résumé des modifications
 
(59 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
[[Category:debian]]
[[Category:debian]]
[[Category:virtualisation]]
[[Category:virtualisation]]
* '''Cette page n'est plus maintenue, les informations contenues ici sont potentiellement obsolètes''' *


=Partitionnement du disque dur=
=Partitionnement du disque dur=
Ligne 180 : Ligne 183 :


<pre>
<pre>
echo onyx.csnu.org > /etc/hostname
echo proxmox.domain.tld > /etc/hostname
echo onyx.csnu.org > /etc/mailname
echo proxmox.domain.tld  > /etc/mailname
</pre>
</pre>


Ligne 188 : Ligne 191 :
aptitude install proxmox-ve-2.6.32 ntp lvm2
aptitude install proxmox-ve-2.6.32 ntp lvm2
</pre>
</pre>
Gardez en considération que si vous créez des VEs avec openvz, vous n'aurez pas besoin d'installer de client ntp sur vos VEs étant donné que les VEs openvz partagent le même kernel que l'host.


Pour simplifier l'administration, créez un lien virtuel de /vz vers /var/lib/vz :
Pour simplifier l'administration, créez un lien virtuel de /vz vers /var/lib/vz :
Ligne 243 : Ligne 248 :


Je vous renvoi sur http://wiki.csnu.org/index.php?title=Installation_et_configuration_de_OpenSSL pour la mise en place d'une autorité de certification.
Je vous renvoi sur http://wiki.csnu.org/index.php?title=Installation_et_configuration_de_OpenSSL pour la mise en place d'une autorité de certification.
Dans l'exemple suivant, je créé un certificat proxmox et le signe avec l'autorité onyx_ca :
Dans l'exemple suivant, je créé un certificat proxmox et le signe avec l'autorité proxmox_ca :


<pre>
<pre>
openssl req -newkey rsa:2048 -keyout proxmox.key -out proxmox.req
openssl req -newkey rsa:2048 -keyout proxmox.key -out proxmox.req
openssl ca -name onyx_ca -extensions PROXMOX -in proxmox.req -out proxmox.pem
openssl ca -name proxmox_ca -extensions PROXMOX -in proxmox.req -out proxmox.pem
</pre>
</pre>


Ligne 253 : Ligne 258 :
mkdir /etc/apache2/ssl/
mkdir /etc/apache2/ssl/
mv proxmox.* /etc/apache2/ssl/
mv proxmox.* /etc/apache2/ssl/
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/onyx_ca/onyx_ca.pem > /etc/apache2/ssl/cachain.pem
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/proxmox_ca/proxmox_ca.pem > /etc/apache2/ssl/cachain.pem
</pre>
</pre>


Ligne 359 : Ligne 364 :
# information on enabling SSL in the smtp client.
# information on enabling SSL in the smtp client.


myhostname = onyx.csnu.org
myhostname = proxmox.domain.tld
mydomain = onyx.csnu.org
mydomain = proxmox.domain.tld
alias_maps = hash:/etc/aliases
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
myorigin = /etc/mailname
mydestination = onyx.csnu.org, localhost
mydestination = proxmox.domain.tld , localhost
relayhost =  
relayhost =  
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
Ligne 404 : Ligne 409 :
</pre>
</pre>


Puis générez la clé et le certificat, et signez le avec votre autorité (onyx_ca dans mon cas) :
Puis générez la clé et le certificat, et signez le avec votre autorité (proxmox_ca dans mon cas) :
<pre>
<pre>
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req
openssl ca -config /etc/ssl/openssl.cnf -name onyx_ca -extensions POSTFIX -in postfix.req -out postfix.pem
openssl ca -config /etc/ssl/openssl.cnf -name proxmox_ca -extensions POSTFIX -in postfix.req -out postfix.pem
</pre>
</pre>


Ligne 416 : Ligne 421 :
mv postfix.pem /etc/postfix/ssl/
mv postfix.pem /etc/postfix/ssl/
chmod 600 /etc/postfix/ssl/*
chmod 600 /etc/postfix/ssl/*
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/onyx_ca/onyx_ca.pem > /etc/postfix/ssl/ca_chain.pem
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/proxmox_ca/proxmox_ca.pem > /etc/postfix/ssl/ca_chain.pem
</pre>
</pre>


Ligne 442 : Ligne 447 :
ou
ou
debootstrap --arch amd64 squeeze /vz/private/777
debootstrap --arch amd64 squeeze /vz/private/777
</pre>


Configuration de base du VE :
Configuration de base du VE :
<pre>
vzctl set 777 --applyconfig basic --save
vzctl set 777 --applyconfig basic --save
echo OSTEMPLATE=\"debian-6.0\" >> /etc/vz/conf/777.conf
echo OSTEMPLATE=\"debian-6.0\" >> /etc/vz/conf/777.conf
</pre>


Attribuez l'ip <code>192.168.0.2</code> à votre VE puis nattez la :
<pre>
vzctl set 777 --ipadd 192.168.0.2 --save
vzctl set 777 --ipadd 192.168.0.2 --save
iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to 91.121.141.220
iptables -t nat -A POSTROUTING -s 192.168.0.2 -o vmbr0 -j SNAT --to 91.121.141.220


vzctl set 777 --nameserver 192.168.0.1 --save
vzctl set 777 --nameserver 192.168.0.1 --save
</pre>


lancement
Lancez votre VE et entrez y :
<pre>
vzctl start 777
vzctl start 777
entrez dans le VE :
vzctl enter 777
vzctl enter 777
</pre>
</pre>
Ligne 512 : Ligne 521 :
Supprimez les paquets inutiles :
Supprimez les paquets inutiles :
<pre>
<pre>
aptitude purge isc-dhcp-common isc-dhcp-client
aptitude purge isc-dhcp-common isc-dhcp-client module-init-tools
</pre>
</pre>


Ligne 666 : Ligne 675 :
</pre>
</pre>


Commencez par mettre à jour la liste des paquets puis installez l'éditeur texte <code>nano</code> si vous n'êtes pas fan de <code>vi</code> qui lui est installé par défaut :
Commencez par mettre à jour la liste des paquets puis installez l'éditeur texte <code>nano</code> si vous n'êtes pas fan de <code>vi</code> qui lui est installé par défaut, ainsi qu'aptitude :
<pre>
<pre>
apt-get update
apt-get update
Ligne 690 : Ligne 699 :
<pre>
<pre>
update-rc.d -f ondemand remove
update-rc.d -f ondemand remove
update-rc.d -f klogd remove
</pre>
</pre>


Ligne 706 : Ligne 714 :
aptitude update
aptitude update
aptitude safe-upgrade
aptitude safe-upgrade
</pre>
Supprimez les paquets inutiles :
<pre>
aptitude purge ubuntu-minimal eject isc-dhcp-client isc-dhcp-common ntpdate console-setup kbd
</pre>
Vous pouvez voir la liste des paquets installés avec
<pre>
aptitude search '~i'
</pre>
Remplacez rsyslog par sysklogd :
<pre>
aptitude purge rsyslog
aptitude install sysklogd
</pre>
</pre>


Ligne 716 : Ligne 739 :
<pre>
<pre>
dpkg-reconfigure tzdata
dpkg-reconfigure tzdata
locale-gen fr_FR.UTF-8 fr_FR.ISO8859-1
locale-gen fr_FR.UTF-8
aptitude install language-pack-fr
echo "LANG=\"fr_FR.UTF-8\"" > /etc/default/locale
chmod o+r /etc/default/locale
</pre>
</pre>


Ligne 736 : Ligne 762 :


Vous pouvez faire de même dans <code>/etc/skel/.profile</code> et <code>/etc/skel/.bashrc</code> (umask, couleurs, ...) pour les futurs utilisateurs du VE.
Vous pouvez faire de même dans <code>/etc/skel/.profile</code> et <code>/etc/skel/.bashrc</code> (umask, couleurs, ...) pour les futurs utilisateurs du VE.
Supprimez les paquets inutiles :
<pre>
aptitude purge ubuntu-minimal eject isc-dhcp-client isc-dhcp-common ntpdate console-setup kbd
</pre>
Vous pouvez voir la liste des paquets installés avec
<pre>
aptitude search '~i'
</pre>


Désactivez getty (inutile sur les VEs) :
Désactivez getty (inutile sur les VEs) :
Ligne 767 : Ligne 784 :
ln -s /proc/mounts /etc/mtab
ln -s /proc/mounts /etc/mtab
update-rc.d -f mtab.sh remove
update-rc.d -f mtab.sh remove
vérifier la présence de mtab.sh
</pre>
</pre>


Ligne 782 : Ligne 798 :
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N ''
rm -f \$0
rm -f \$0
EOF
EOF
Ligne 834 : Ligne 851 :
=Créer son template Archlinux 2010.05=
=Créer son template Archlinux 2010.05=


Commencez par ajoutez les dépôts backports de debian lenny, puis installez le paquet <code>xz-utils</code> :
==Prérequis==
Si vous souhaitez utiliser des VEs archlinux en veth, vous constaterez rapidement qu'openvz ajoutera forcément une interface venet0 malgré que vous n'ayez configuré aucune ip venet sur votre VE. Voici une version légèrement modifiée du script d'ajout d'ip pour archlinux que vous pouvez utiliser pour régler ce problème :
<pre>
wget http://wiki.csnu.org/images/5/50/Arch-add_ip.sh
mv /etc/vz/dists/scripts/arch-add_ip.sh /etc/vz/dists/scripts/arch-add_ip.sh.bak
mv Arch-add_ip.sh /etc/vz/dists/scripts/arch-add_ip.sh
</pre>
 
==installation==
 
Commencez par ajouter les dépôts backports de debian lenny, puis installez le paquet <code>xz-utils</code> :
<pre>
<pre>
echo "deb http://backports.debian.org/debian-backports lenny-backports main" >> /etc/apt/sources.list
echo "deb http://backports.debian.org/debian-backports lenny-backports main" >> /etc/apt/sources.list
Ligne 899 : Ligne 926 :
pacman -Suy
pacman -Suy
</pre>
</pre>
Puis installez les paquets manquants :
<pre>
pacman -S procps dnsutils mlocate
</pre>
Sécurisez votre root :
<pre>chmod 700 /root</pre>
Créez le fichier <code>/root/.bashrc</code> :
<pre>
#
# ~/.bashrc
#
umask 0027
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
alias ls='ls --color=auto --group-directories-first'
#PS1='[\u@\h \W]\$ '
</pre>
Créez le fichier <code>/root/.profile</code> :
<pre>
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi
mesg n
</pre>
Vous pouvez éditer <code>/etc/skel/.bashrc</code> (umask, couleurs, ...) afin de définir des paramètres par défaut pour vos futurs utilisateurs.


Éditez le fichier <code>/etc/locale.gen</code> et dé-commentez les locales fr_FR.  
Éditez le fichier <code>/etc/locale.gen</code> et dé-commentez les locales fr_FR.  
Ligne 912 : Ligne 977 :
</pre>
</pre>


Créez un lien entre /proc/mounts et /etc/mtab, supprimez les getty, installez openssh et autorisé l'accès de l'extérieur :
Créez un lien entre /proc/mounts et /etc/mtab, supprimez les getty :
<pre>
<pre>
rm /etc/mtab
rm /etc/mtab
ln -s /proc/mounts /etc/mtab
ln -s /proc/mounts /etc/mtab
sed -i -e '/getty/d' /etc/inittab
sed -i -e '/getty/d' /etc/inittab
</pre>
Installez openssh et autorisez l'accès de l'extérieur :
<pre>
pacman -S openssh
pacman -S openssh
echo "sshd: ALL : ALLOW" >> /etc/hosts.allow
echo "sshd: ALL : ALLOW" >> /etc/hosts.allow
echo "nobody:x:99:99:nobody:/:/sbin/nologin" >> /etc/passwd
</pre>
</pre>


Ligne 934 : Ligne 1 004 :


<pre>
<pre>
DAEMONS=(hwclock syslog-ng network netfs crond ssh)
DAEMONS=(hwclock syslog-ng network netfs crond sshd)
</pre>
</pre>


Ligne 944 : Ligne 1 014 :
==finalisation==
==finalisation==


Supprimez l'ip de votre VE :
<pre>
vzctl set 777 --ipdel all --save
</pre>
Créez un fichier d'exclusion contenant les différents fichiers et dossiers qui ne devront pas se retrouver dans le template définitif :
<pre>
<pre>
cd /vz/private/777/
cd /vz/private/777/
Ligne 950 : Ligne 1 026 :
find ./var/cache/ -name '*.tar.gz' >> ../exclude.list
find ./var/cache/ -name '*.tar.gz' >> ../exclude.list
find ./root/.bash_history >> ../exclude.list
find ./root/.bash_history >> ../exclude.list
vzctl set 777 --ipdel all --save
</pre>
 
Stoppez le VE :
<pre>
vzctl stop 777
vzctl stop 777
</pre>
Supprimez les lignes suivantes du fichier <code>/vz/private/777/etc/rc.conf</code> :
<pre>
lo="lo 127.0.0.1"
INTERFACES=(  "lo"  "venet0"  )
venet0="venet0 127.0.0.1 netmask 255.255.255.255 broadcast 0.0.0.0"
rt_venet0="-net 191.255.255.1 netmask 255.255.255.255 dev venet0"
rt_default="default gw 191.255.255.1"
ROUTES=(  "rt_venet0"  "rt_default" )
</pre>
créez l'archive du template :
<pre>
tar --numeric-owner -X ../exclude.list -czf /vz/template/cache/arch-2010.05-minimal_1.0_amd64.tar.gz ./
tar --numeric-owner -X ../exclude.list -czf /vz/template/cache/arch-2010.05-minimal_1.0_amd64.tar.gz ./
rm ../exclude.list
rm ../exclude.list
Ligne 966 : Ligne 1 059 :


==Nettoyage==
==Nettoyage==
vzctl stop 123456
vzctl destroy 123456
rm /etc/vz/conf/123456.conf.destroyed
vzctl destroy 777
rm /etc/vz/conf/777.conf.destroyed
==nettoyage==
<pre>
<pre>
vzctl stop 123456
vzctl stop 123456
Ligne 984 : Ligne 1 068 :


=Créer et configurer un VE Debian 6.0=
=Créer et configurer un VE Debian 6.0=
==Généralités==
<div id="debian_gene"></div>


Connectez vous à votre interface proxmox. Cliquez sur <code>Virtual Machines</code> puis sur <code>Create</code>.
Connectez vous à votre interface proxmox. Cliquez sur <code>Virtual Machines</code> puis sur <code>Create</code>.
Ligne 995 : Ligne 1 082 :


Si vous choisissez veth, veillez à bien entrer l'adresse MAC virtuelle fournit par la console de votre provider.
Si vous choisissez veth, veillez à bien entrer l'adresse MAC virtuelle fournit par la console de votre provider.
De plus, si vous avez suivi ce wiki, selectionnez <code>vmbr0</code> à la ligne <code>brdige</code>.
De plus, si vous avez suivi ce wiki, selectionnez <code>vmbr0</code> à la ligne <code>bridge</code>.


Cliquez enfin sur <code>create</code> afin de lancer la génération du VE. Attendez quelques dizaines de secondes puis retournez à la liste des VEs.
Cliquez enfin sur <code>create</code> afin de lancer la génération du VE. Attendez quelques dizaines de secondes puis retournez à la liste des VEs.
Ligne 1 080 : Ligne 1 167 :


Dans le doute, créez votre propre template =)
Dans le doute, créez votre propre template =)
=Créer et configurer un VE Archlinux 2010.05=
==Généralités==
Reportez vous à la section sur la [[#debian_gene|création d'un VE Debian 6.0]]
==Configuration du réseau en veth==
Connectez vous en ssh sur l'host en utilisateur root puis entrez dans votre VE :
<pre>vzctl enter 101</pre>
<code>101</code> est le numéro de votre VE (VMID) disponible dans le status de la VE sur l'interface web de proxmox.
Créez le fichier <code>/etc/rc.d/openvz_net</code> contenant :
<pre>
#! /bin/bash
#echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
ifconfig eth0 <ipfailover> netmask 255.255.255.255
ifconfig eth0 inet6 add ipv6failover/64
#route del default
route add -host 91.121.141.254 dev eth0
route add default gw 91.121.141.254
</pre>
Rendez ce fichier exécutable :
<pre>chmod +x /etc/rc.d/openvz_net</pre>
Modifiez ensuite la ligne <code>DAEMONS</code> du fichier <code>/etc/rc.conf</code> afin d'y ajouter <code>openvz_net</code> :
<pre>DAEMONS=(hwclock syslog-ng network openvz_net netfs crond sshd)</pre>
Pour resortir de votre VE, tapez :
<pre>exit</pre>
===Ajouter une interface réseau virtuelle locale===
Sur l'host, ajoutez l'interface virtuelle eth1 bridgé sur vmbr1 à votre VE :
<pre>vzctl set 101 --netif_add eth1,,,,vmbr1 --save</pre>
Ensuite, il ne vous reste plus qu'à configurer l'interface sur votre VE. Ajoutez la ligne suivante dans le fichier <code>/etc/rc.d/openvz_net</code> :
<pre>
ifconfig eth1 192.168.0.4 netmask 255.255.255.0
</pre>
Redémarrez votre VE. Vous pouvez désormais pinguer 192.168.0.1, qui est l'adresse ip locale de votre host.
==Configuration du réseau en veneth==
Nous allons supposer que vous avez défini l'adresse IP 192.168.0.4 à votre VE lors de sa création.
Sur l'host, tapez simplement :
<pre>
iptables -t nat -A POSTROUTING -s 192.168.0.4 -o vmbr0 -j SNAT --to 91.121.141.220
</pre>
=vzctl, modification des VEs en ligne de commande=
* Définir les serveurs DNS d'un VE :
<pre>vzctl set <VEID> --nameserver ip1 --nameserver ip2 --nameserver ip3 --searchdomain domain.tld --save</pre>
Vous pouvez ajouter autant de directive <code>--nameserver ip*</code> que vous le souhaitez.
Vous pouvez entrer des IPv6, mais elles ne seront pas affichés correctement dans le panel de gestion de proxmox.
=Protéger SSH dans un VE=
<pre>
aptitude purge module-init-tools
</pre>
Puis reportez vous à [[Protéger SSH avec sshguard]]


=Partager des fichiers d'un VE à un autre VE=
=Partager des fichiers d'un VE à un autre VE=
Ligne 1 146 : Ligne 1 297 :
Configurez l'hostname et le ort.
Configurez l'hostname et le ort.
Dans la section <code>Desktop</code>, selectionnez <code>Unix and custom</code>. Cliquez sur <code>Settings</code> et selectionnez <code>Run the default X client script on server</code> ainsi que <code>New virtual Desktop</code>
Dans la section <code>Desktop</code>, selectionnez <code>Unix and custom</code>. Cliquez sur <code>Settings</code> et selectionnez <code>Run the default X client script on server</code> ainsi que <code>New virtual Desktop</code>
Si ça ne fonctionne pas, essayez de forcer le lancement de <code>/usr/bin/xfce4-session</code> dans les settings de nx


S'il vous manque des icones après vous être logué, essayez d'installer le paquet <code>gnome-icon-theme</code> sur le serveur.
S'il vous manque des icones après vous être logué, essayez d'installer le paquet <code>gnome-icon-theme</code> sur le serveur.
==Configuration de OpenNX==
OpenNX est une alternative libre au client nx de nomachine.
Vous trouverez les informations de téléchargement et d'installation pour différents OS et distributions linux sur http://opennx.net/.
La configuration est la même que celle du NX Client de nomachine, et il est compatible avec les fichiers de configuration de NXclient.
Attention cependant : il semble mal supporter les ipv6. Veillez donc a :
* utiliser une adresse ipv4 uniquement dans la session de connexion
* ne pas faire écouter votre serveur ssh sur l'adresse ipv6 ::1
==Utiliser VNC en plus de NX==
Sous gnome / xfce installez vino :
<pre>aptitude install vino</pre>
Changez les préférences avec <code>vino-preferences</code>
Lancez le serveur vino :
<pre>/usr/lib/vino/vino-server</pre>


=Installer une interface graphique avec NX server sur un VE OpenVZ Archlinux=
=Installer une interface graphique avec NX server sur un VE OpenVZ Archlinux=
<pre>pacman -S xfce4</pre>
Téléchargez NX Free Edition client, node et server sur http://www.nomachine.com/select-package.php?os=linux&id=1
<pre>
mv nx*.tar.gz /usr
cd /usr
tar zxvf nxclient-3.5.0-6.x86_64.tar.gz
tar zxvf nxnode-3.5.0-3.x86_64.tar.gz
tar zxvf nxserver-3.5.0-4.x86_64.tar.gz
mkdir /etc/init.d
/usr/NX/scripts/setup/nxnode --install suse
/usr/NX/scripts/setup/nxserver --install suse
mv /etc/init.d/* /etc/rc.d/
</pre>
<pre>
/etc/rc.d/nxserver start
</pre>
=issue=
==Erreurs du type <code>IPv6 addrconf: prefix with wrong length 56</code> ==
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.
Ajouter les lignes suivantes dans votre fichier <code>/etc/sysctl.conf</code> :
<pre>
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.lo.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.vmbr0.autoconf = 0
net.ipv6.conf.vmbr1.autoconf = 0
net.ipv6.conf.dummy0.autoconf = 0
net.ipv6.conf.venet0.autoconf = 0
</pre>
De plus, si vous configurez vos VEs en veth, vous devrez :
* Ajouter une ligne similaire aux précédentes pour chaque interface réseau du VE dans le fichier <code>/etc/sysctl.conf</code> du VE. Typiquement :
<pre>
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.lo.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.eth1.autoconf = 0
</pre>
* Ajouter une ligne similaire aux précédentes pour chaque interface réseau virtuelle veth sur l'host (net.ipv6.conf.vethXXX/Y.autoconf où XXX est le VEID est Y un numéro d'interface).
Pour repérer facilement les lignes à ajouter, utiliser <code>sysctl -a</code> et <code>grep</code> :
<pre>sysctl -a | grep net.ipv6.conf.*.autoconf</pre>
==Cacher les processus des VEs sur l'host==
<pre>sysctl kernel.pid_ns_hide_child=1</pre>
4 231

modifications

Menu de navigation