Mettre en place une jail www pour une jail poudriere

Il n’est plus recommandé pour le moment de faire tourner poudrière dans une jail ! : Tant que les FileSystèmes fdescfs tmpfs linprocfs … ne seront pas ‘jailable’.

Prérequis :

But : Obtenir dans deux jails distinctes, une pour poudrière et une autre pour serveur web, un ‘fournisseur’ de pkg pour d’autres jails sur ce même hôte.

Le how to précédent traitant de poudrière nous a amené à la structure zfs suivante :

root@host # zfs list -o name,mountpoint,jailed
NAME                              MOUNTPOINT              JAILED
[...]
zroot/pkgng-repo                  none                    on
zroot/pkgng-repo/data             none                    on
zroot/pkgng-repo/jails            /poudre/jails           on
zroot/pkgng-repo/jails/[...]      /poudre/jails/[...]     on
zroot/pkgng-repo/ports            /poudre/ports           on
zroot/pkgng-repo/ports/default    /poudre/ports/default   on
zroot/prison                      none                    off
zroot/prison/www                  /prison/webserver       off
zroot/prison/poudre               /prison/poudre          off

Les packages pkgng étant générés dans le volume zroot/pkgng-repo/data par la jail ‘poudre’, il est nécessaire de le partager avec la jail ‘www’.

Comme nous ne pouvons attribuer notre volume zfs à deux jails distinctes, nous allons changer la façon d’accéder à ces données.

Désactivation mode jailed, puis montage nullfs :

root@host # zfs get jailed zroot/pkgng-repo
NAME              PROPERTY  VALUE   SOURCE
zroot/pkgng-repo  jailed    on      local
root@host # zfs set jailed=off zroot/pkgng-repo
root@host # zfs get jailed zroot/pkgng-repo
NAME              PROPERTY  VALUE   SOURCE
zroot/pkgng-repo  jailed    off     local

Montage des dataset sur l’hôte :

root@host # zfs set mountpoint=/poudre zroot/pkgng-repo
root@host # zfs set mountpoint=/poudre/data zroot/pkgng-repo/data
root@host # zfs mount -a

Création des point de montage nullfs pour les jails :

root@host # mkdir /prison/poudre/data
root@host # mkdir /prison/apache/data

Monter en nullfs dans les jails :

root@host # mount -t nullfs /poudre/data/ /prison/poudre/data/
root@host # mount -o ro -t nullfs /poudre/data/ /prison/apache/data/

Montages définitif déclaré sur l’hôte :

root@host # grep nullfs /etc/fstab
/poudre/data /prison/poudre/data nullfs rw 0 0
/poudre/data /prison/apache/data nullfs ro 0 0
root@host # mount | grep nullfs
/poudre/data on /prison/poudre/data (nullfs, local)
/poudre/data on /prison/apache/data (nullfs, local, read-only)

Configuration poudrière :

On spécifie ici directement le repertoire de travail pour éviter le montage zfs lié à ${BASEFS}/data .

root@host # cd /prison/poudre/usr/local/etc
root@host # cat poudriere.conf | grep POUDRIERE_DATA
POUDRIERE_DATA=/data

Remettre zfs jailled on sur les autres dataset :

root@host # zfs set jailed=on zroot/pkgng-repo/jails
root@host # zfs set jailed=on zroot/pkgng-repo/ports

Lancement de la jail poudrière :

La procédure de lancement de la jail poudrière a de fait forcément changé.

root@host # zfs jail `jls -q -j poudre jid` zroot/pkgng-repo/jails
root@host # zfs jail `jls -q -j poudre jid` zroot/pkgng-repo/ports
root@host # jexec -U root poudre zfs mount -a

Conclusion :

Nous avons maintenant deux jails distinctes:

  • une jail ‘poudre’ de construction de repositorie pkgng
  • une jail ‘www’ servant le précédant repositorie et pouvant également servir d’autre pages…
root@host # jls
   JID  IP Address      Hostname      Path
   268  -               poudre        /prison/poudre
   270  -               www           /prison/webserver
This entry was posted in unix and tagged , , , , . Bookmark the permalink.

One Response to Mettre en place une jail www pour une jail poudriere

  1. lard says:

    Luckily I took french in highschool. This was clever. Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *

ERROR: si-captcha.php plugin says GD image support not detected in PHP!

Contact your web host and ask them why GD image support is not enabled for PHP.

ERROR: si-captcha.php plugin says imagepng function not detected in PHP!

Contact your web host and ask them why imagepng function is not enabled for PHP.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>