ezjail : gérer facilement des jail sur FreeBSD
Les jails permettent de créer des VPS sur un système FreeBSD. Les processus sont emprisonnés dans un niveau d'exécution et un environnement distinct. L'équivalent sur Linux est OpenVZ / VServer / LXC mais le système de jails sous FreeBSD est intégré au système et plutôt mature.
La documentation de FreeBSD décrit le processus manuel de création de jails. Je recommande la lecture et le suivi de l’exercice proposé afin d'acquérir les bases. Il est aussi mentionné la possibilité d'utiliser un "squelette" commun à toutes les jails, ces dernières n'ayant que les répertoires susceptibles d'être modifié. Cela évite d'avoir 10 fois la même arborescence alors que beaucoup d'éléments sont communs. ezjail est un outil permettant d'automatiser tout ceci, et nous allons voir que c'est plutôt bien foutu.
Installation de FreeBSD
Depuis la version 9, l'installeur a été simplifié au point qu'il n'est plus nécessaire de le détailler. Le choix des sets importe peu sur le résultat final, mais personnellement j'ajoute les sources car j'estime que cela fait partie de l'OS.
La suite de l'installation ne nécessite pas de paramétrage particulier.
Configuration
Vous pouvez commencer par mettre à jour le système :
# freebsd-update fetch # freebsd-update install # reboot
Nous allons maintenant installer ezjail. Il y a deux solutions : le compiler à partir des ports, ou le télécharger sous forme binaire avec pkg_add.
Méthode 1 : ports
Commencez par télécharger l'arbre des ports :
# portsnap fetch extract
Puis compilez et installez sysutils/ezjail :
# cd /usr/ports/sysutils/ezjail # make install clean
Il faut ensuite autoriser ezjail à se lancer :
echo ezjail_enable="YES" >> /etc/rc.conf
Méthode 2 : pkg_add
Utilisez la commande suivante :
# pkg_add -r ezjail
Il faut ensuite autoriser ezjail à se lancer :
echo ezjail_enable="YES" >> /etc/rc.conf
Création de la jail de base
La commande suivante va préparer la jail de base :
# ezjail-admin install
Création d'une jail
Utilisez la commande suivante :
# ezjail-admin create dns 'em0|192.168.0.2'
Démarrer une jail
Voici la commande :
# ezjail-admin start dns
Arrêt d'une jail
ezjail-admin stop dns
Mise à jour des jails
La jail de base va être mise à jour, ce qui va répandre les modifications sur toutes les jails.
# ezjail-admin update -u
Suppression d'une jail
La commande est la suivante :
# ezjail-admin delete -wf dns
Modifier le "modèle" des jail
Cas concret : vous voulez activer SSH sur toutes les jails créées. C'est faisable ! La jail "modèle" est située ici : /usr/jails/newjail. Donc il faut éditer/créer le fichier /usr/jails/newjail/etc/rc.conf :
# echo sshd_enable="YES" >> /usr/jails/newjail/etc/rc.conf
Et voilà !
Documentation
D'autres usages sont possibles, certains seront intéressés par les possibilités offertes avec l'intégration ZFS.
- Site officiel ezjail : Très pauvre, mais les bases sont là.
- Utiliser la commande man ezjail-admin directement sur FreeBSD, c'est très complet.