Créer un template de machine virtuelle sous OpenVZ

Logo OpenVZ

Le clonage, c'est bien. Mais il y a mieux !

L'utilisation de la virtualisation vous permet d'éviter la fastidieuse phase de configuration matériel.
L'utilisation des templates VPS d'OpenVZ vous permet d'éviter la fastidieuse phase d'installation de l'OS.
L'utilisation de vos propres templates VPS OpenVZ vous permettra d'éviter la fastidieuse phase de la configuration spécifique à vos besoins de votre serveur.

Restera à votre charge la configuration réseau dédiée à votre machine virtuelle. Dur, la vie de Sysops.

Introduction à OpenVZ

OpenVZ est un système de virtualisation basé sur des contenaires de machines virtuelles isolés. Ces serveurs virtuels sont appelés VE - Virtual Environment -, VPS - Virtual Private Server - ou VDS - Virtual Dedicated Server -.

Pourquoi créer un template spécifique de VPS ?

OpenVZ distribue un ensemble de template générique sur son site, rubrique download.

Vous pouvez bien sûr dupliquer une machine virtuelle existante. Mais ce clone n'est pas vierge.

Créer un template vous permet de prendre en compte vos préférences personnelles en terme d'environnement de travail de base.
Par exemple dans les templates d'OpenVZ, le fuseau horaire n'est pas paramétré pour la France, il n'y a pas de complétion, pas d'alias, la configuration par défaut de ssh et logrotate est moyenne, vos clés ssh ne sont pas installées, la configuration du repository d'apt-get est incomplète et non à jour...
Ce template personnel pourra ensuite servir à de base à la création de vos futures machines virtuelles pré-configurées.

Créer une machine virtuelle OpenVZ

Connectez-vous sur le host et créez un nouvel environnement à partir d'un template de référence. Les templates sont disponible sur le site d'OpenVZ, rubrique download. Dans l'exemple, je pars du template OpenVZ basé sur la distribution Ubuntu 9.04.

# vzctl create 555 --ostemplate ubuntu-9.04-x86 --hostname 555
Creating container private area (ubuntu-9.04-x86)
Performing postcreate actions
Container private area was created

Assignez à cette machine virtuelle une adresse IP publique et un serveur DNS :

# vzctl set  555 --ipadd <mon_IP_publique> --nameserver <Mon_DNS> --save
Saved parameters for CT 555

Démarrez la machine virtuelle :

# vzctl start 555
Starting container ...
Container is mounted
Adding IP address(es): xxx.xxx.xxx.xxx
Setting CPU units: 1000
Configure meminfo: 65536
File resolv.conf was modified
Container start in progress...

Vérifiez que la machine virtuelle accède à Internet :

# vzctl exec 555 ping -n -c 1 google.com
PING google.com (74.125.45.100) 56(84) bytes of data.
64 bytes from 74.125.45.100: icmp_seq=1 ttl=53 time=110 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 110.040/110.040/110.040/0.000 ms

Personnaliser la machine virtuelle OpenVZ

Connectez-vous à votre VPS :

# vzctl enter 555
entered into CT 555
root@555:/#

Mettez à jour le repository des paquets et installez la complétion bash et le gestionnaire de paquets aptitude :

root@555:/# apt-get update
root@555:/# apt-get install bash-completion aptitude

Identifiez les paquets installés par défaut dans ce template OpenVZ :

root@555:/# dpkg -l

Supprimez les paquets qui ne vous intéressent pas avec aptitude purge. Je vous suggère de vous focaliser sur les services pour des raisons de sécurité.

root@555:/# dpkg -l | grep -i server

Pour ce VE, je décide de supprimer tous services autre que OpenSSH :

root@555:/# aptitude purge apache2 apache2-doc apache2-mpm-prefork \
apache2-utils apache2.2-common bind9 samba samba-common

Personnaliser votre shell :

root@555:/# vi ~/.bashrc

Je change la fin du fichier pour activer la complétion et des alias courants :

# some more ls aliases
alias ll='ls -lh'
alias la='ls -A'
alias df='df -h'
#alias l='ls -CF'

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

Vous pouvez changer la configuration du serveur SSH.

root@555:/# vi /etc/ssh/sshd_config

Consultez l'article l'essentiel de SSH pour plus d'informations.

Personnalisez l'éditeur de texte vi :

root@555:/# vi /etc/vim/vimrc

Pour ma part, je souhaite que les accolades associées soient affichées en surbrillance et que la recherche ignore la case.

set showmatch           " Show matching brackets.
set ignorecase          " Do case insensitive matching

Ajoutez votre clé ssh pour sécuriser la connexion vers votre VPS guest. Depuis votre poste client, récupérez la clé publique, par exemple :

# cat ~/.ssh/id_rsa.pub

Copiez le résultat et revenez dans la console de la machine virtuelle :

root@555:/# mkdir ~/.ssh
root@555:/# vi ~/.ssh/authorized_keys

Copiez la clé dans le fichier et sauvegardez.

Réglez le fuseau horaire de votre serveur guest et continuez ainsi la personnalisation en ajoutant vos scripts préférés.

Terminer par la mise à niveau des paquets résiduels :

root@555:/# aptitude upgrade

Puis, supprimez les informations réseaux spécifiques à la création de ce template VE :

root@555:/# >/etc/resolv.conf

Enfin, quittez l'environnement virtuel et arrêtez-le :

root@555:/# exit
# vzctl stop 555
# vzctl set 555 --ipdel all --save

Créer le template de la machine virtuelle OpenVZ

Depuis une console sur le serveur OpenVZ host :

# cd /vz/private/555/
# tar czf /vz/template/cache/ubuntu-9.04-x86-SLA.tar.gz .

ou vous remplacerez SLA dans le nom de l'archive par ce que vous voulez.
Votre template est prêt.

Tester votre nouveau template OpenVZ

Pour vérifier que votre template OpenVZ est viable, il suffit de l'utiliser.
Créez une nouvelle machine virtuelle avec celui-ci, initialisez ses paramètres réseau, lancez-la et connectez vous dessus :

# vzctl create 666 --ostemplate ubuntu-9.04-x86-SLA --hostname 666
# vzctl set  666 --ipadd <mon_IP_publique> --nameserver <Mon_DNS> --save
# vzctl start 666
# vzctl enter 666

Testez vos personnalisations : connexion ssh, alias, services actifs,...

root@666:/# ps axf  
  PID TTY      STAT   TIME COMMAND
  545 ?        Ss     0:00 vzctl: pts/0   
  546 pts/0    Ss     0:00  \_ -bash
  576 pts/0    R+     0:00      \_ ps axf
    1 ?        Ss     0:00 init [2]      
   17 ?        S      0:00 [init-logger]
  405 ?        Ss     0:00 /sbin/syslogd -u syslog
  415 ?        Ss     0:00 /usr/sbin/sshd
  435 ?        Ss     0:00 /usr/sbin/xinetd -pidfile /var/run/xinetd.pid -stayal
  474 ?        Ss     0:00 sendmail: MTA: accepting connections          
  527 ?        Ss     0:00 /usr/sbin/cron
  534 ?        S      0:00 /bin/sh /etc/init.d/ondemand background
  540 ?        S      0:00  \_ sleep 60

root@666:/# alias
alias df='df -h'
alias la='ls -A'
alias ll='ls -l'
alias ls='ls --color=auto'

Tout est OK. Les machines virtuelles de travail peuvent être supprimées.

root@666:/# exit
# vzctl stop 666
# vzctl destroy 666
# vzctl destroy 555

Vous disposez maintenant de votre propre template OpenVZ pré-configuré.

Commentaires

Salut,

tres bien, mais comment faire pour changer les options dans l'nterface web de Proxmox, il reconnait pas les templates creer manuellement, il y a une solution ?

A+

Bonjour,
OpenVZ n'est pas Proxmox.

Concernant Proxmox, pour ajouter un nouveau template OpenVZ, allez dans le menu Appliance Templates, et uploader votre template. Il est alors ajouté à la liste OpenVZ Templates.

Merci beaucoup

Merci pour la rédaction de cet article qui m'a bien aidé dans la réalisation de mon projet ^^

Plaisir partagé