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
Note : Si vous souhaitez ajouter les sources dans la jail de base, vous devez rajouter le paramètre s. Pour avoir les ports (récupérés à partir de portsnap) dans la jail de base ajoutez le paramètre p. Si vous avez déjà installé la jail de base et souhaitez rajouter les ports ou les sources, réutilisez la commande ezjail-admin install mais spécifiez le paramètre en majuscule, par exemple ezjail-admin install -P

Création d'une jail

Utilisez la commande suivante :

# ezjail-admin create dns 'em0|192.168.0.2'
Note : "dns" est le nom donné à notre jail, adaptez-le si besoin ! em0 est le nom de la carte réseau, adaptez-le en fonction de votre système. L'adresse IP sera automatiquement ajoutée comme alias par ezjail, pas de paramétrage à faire, à part spécifier celle que vous désirez donner à votre jail !

Démarrer une jail

Voici la commande :

# ezjail-admin start dns
Note : Les jails se lancent automatiquement au démarrage de l'hôte grâce au paramètre ezjail_enable ajouté au rc.conf.

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
Note : Le u (minuscule) applique les mises à jour mineures. Le U (majuscule) applique les mises à jour majeures. A vous de décider. L'option P (majuscule) met à jour les ports (en utilisant portsnap).

Suppression d'une jail

La commande est la suivante :

# ezjail-admin delete -wf dns
Note : Le paramètre w spécifie la suppression de l'arborescence de la jail sur le disque. Le paramètre f demande l'arrêt de la jail avant suppression.

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.
Vus : 1698
Publié par Maniatux : 95