Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
jails:zfs [2020/08/01 15:49] – [Réseau] david | jails:zfs [2024/01/17 20:17] – [Mail] zorro | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | |||
< | < | ||
====== Créer et administrer vos jails par ZFS ====== | ====== Créer et administrer vos jails par ZFS ====== | ||
Ligne 18: | Ligne 17: | ||
exec.system_user = " | exec.system_user = " | ||
exec.jail_user = " | exec.jail_user = " | ||
- | exec.start | + | exec.start = "/ |
exec.stop = "/ | exec.stop = "/ | ||
exec.consolelog = "/ | exec.consolelog = "/ | ||
path = "/ | path = "/ | ||
- | + | R13 { | |
- | R12 { | + | host.hostname = r13; # Hostname |
- | host.hostname = r12; # Hostname | + | |
ip4 = inherit;# IP address of the jail | ip4 = inherit;# IP address of the jail | ||
ip6 = inherit;# IP address of the jail | ip6 = inherit;# IP address of the jail | ||
- | path = "/ | + | path = "/ |
} | } | ||
</ | </ | ||
- | Notez que le '' | + | Notez que le '' |
Vous aurez probablement besoin d'une interface réseau pour faire communiquer les services des //jails// entre eux. | Vous aurez probablement besoin d'une interface réseau pour faire communiquer les services des //jails// entre eux. | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | ifconfig lo1 create |
- | root@popeye:# | + | sysrc cloned_interfaces+=lo1 |
</ | </ | ||
- | De même, pour assurer un démarrage à chaque reboot, activer le service jail: | + | De même, pour assurer un démarrage à chaque |
<code bash> | <code bash> | ||
- | root@popeye:# | + | sysrc jail_enable=" |
</ | </ | ||
Et précisez les //jails// à démarrer dans la variable '' | Et précisez les //jails// à démarrer dans la variable '' | ||
+ | ==== Consoles ==== | ||
+ | Le paramètre '' | ||
+ | |||
+ | <file whitespace / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
===== Stockage ===== | ===== Stockage ===== | ||
Ligne 54: | Ligne 61: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | zfs create -o mountpoint=/ |
- | root@popeye:# | + | zfs create zroot/ |
</ | </ | ||
<note tuyau> | <note tuyau> | ||
- | Comme vous allez multiplier les datasets reposant sur une même base, vous pouvez activer la '' | + | Comme vous allez multiplier les //datasets// reposant sur une même base, vous pouvez activer la '' |
</ | </ | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | zfs set dedup=on zroot/JAILS |
</ | </ | ||
Ligne 70: | Ligne 77: | ||
Récupérer une //release// et installons une première //jail//, qui va servir de point de départ à toutes les autres. | Récupérer une //release// et installons une première //jail//, qui va servir de point de départ à toutes les autres. | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | cd /jails |
- | root@popeye:# | + | fetch http:// |
- | root@popeye:# | + | tar -C 13.2-RELEASE -xf base.txz |
- | root@popeye:# | + | cp / |
- | root@popeye:# | + | cp / |
- | root@popeye:# | + | touch 13.2-RELEASE/ |
</ | </ | ||
Ligne 82: | Ligne 89: | ||
Et réglez votre rc.conf(5) ainsi: | Et réglez votre rc.conf(5) ainsi: | ||
- | <file ini 12.1-RELEASE/ | + | <file ini 13.2-RELEASE/ |
cron_flags=" | cron_flags=" | ||
Ligne 95: | Ligne 102: | ||
</ | </ | ||
- | Plus quelques réglages dédiées: | + | L’entrée pour cron(8) sert à décaler son activation par rapport à l' |
- | < | + | < |
+ | cron_enable=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | Enfin, donnez lui un nom: | ||
+ | <file ini 13.2-RELEASE/ | ||
hostname=nepasutiliser | hostname=nepasutiliser | ||
</ | </ | ||
Ligne 104: | Ligne 117: | ||
Si votre //jail// doit pouvoir envoyer des mails, le plus rapide est d' | Si votre //jail// doit pouvoir envoyer des mails, le plus rapide est d' | ||
<file ini rc.conf> | <file ini rc.conf> | ||
+ | sendmail_enable=" | ||
sendmail_submit_enable=" | sendmail_submit_enable=" | ||
</ | </ | ||
Ligne 112: | Ligne 126: | ||
</ | </ | ||
- | <callout type=" | + | Si vous désactivez complètement // |
- | Attention, si vous avez autorisé cron(8), assurez vous de désactiver | + | <file ini rc.conf> |
- | Sinon, vous allez remplir la base mail de '' | + | sendmail_enable=" |
- | </callout> | + | sendmail_submit_enable=" |
+ | </file> | ||
+ | Attention, si vous avez autorisé cron(8), periodic(8) sera actif et vous allez remplir la base mail de '' | ||
+ | Assurez vous soit de désactiver les scripts periodic(8) dans ''/ | ||
+ | |||
+ | <file ini periodic.conf> | ||
+ | daily_output=/ | ||
+ | weekly_output=/ | ||
+ | monthly_output=/ | ||
+ | daily_show_success=NO | ||
+ | daily_show_info=NO | ||
+ | </ | ||
+ | |||
+ | ou ajoutez une adresse mail générique pour cron dans ''/ | ||
+ | <file ini periodic.conf> | ||
+ | cron_flags=" | ||
+ | </ | ||
==== Démarrer ==== | ==== Démarrer ==== | ||
Vous pouvez démarrer: | Vous pouvez démarrer: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | root@popeye:# |
- | R12: created | + | R13: created |
</ | </ | ||
- | ====== Multiplier ====== | + | ===== Multiplier ===== |
A partir de ce point, vous avez préparé une base saine que vous allez pouvoir reproduire facilement. | A partir de ce point, vous avez préparé une base saine que vous allez pouvoir reproduire facilement. | ||
Ligne 134: | Ligne 163: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | zfs snap zroot/ |
</ | </ | ||
Attention, ce cliché est dédié à la //jail// '' | Attention, ce cliché est dédié à la //jail// '' | ||
- | + | Créons une nouvelle | |
- | Créons une nouvelle jail, simplement en [[https:// | + | |
<code bash> | <code bash> | ||
- | root@popeye:# | + | zfs clone zroot/ |
</ | </ | ||
- | En fait, vous avez créer un dataset à partir d'un cliché. | + | En fait, vous avez créer un //dataset// à partir d'un cliché. |
C'est aussi simple, vous avez une '' | C'est aussi simple, vous avez une '' | ||
Réglons là: | Réglons là: | ||
- | |||
<file ini TEST/ | <file ini TEST/ | ||
hostname=TEST | hostname=TEST | ||
Ligne 170: | Ligne 197: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | jail -c TEST2 |
TEST: created | TEST: created | ||
TEST2: created | TEST2: created | ||
Ligne 178: | Ligne 205: | ||
De même, les jail(8) vont démarrer dans l' | De même, les jail(8) vont démarrer dans l' | ||
</ | </ | ||
- | ====== Déployer ====== | + | ===== Déployer ===== |
Il suffit de promouvoir le clone, le rendre indépendant du cliché dont il est issu: | Il suffit de promouvoir le clone, le rendre indépendant du cliché dont il est issu: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | zfs promote zroot/ |
</ | </ | ||
Et voilà. | Et voilà. | ||
+ | ===== Montages ===== | ||
+ | Vous pouvez spécifier les points de montages à créer au démarrage de la jail. | ||
+ | Il suffit de créer un '' | ||
+ | |||
+ | <file javascript / | ||
+ | toto { | ||
+ | mount.fstab="/ | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | C'est utile pour monter du tmpfs(5) ou du nullfs(5): | ||
+ | <file whitespace / | ||
+ | tmpfs / | ||
+ | </ | ||
- | ====== Réseau | + | ===== Réseau ===== |
Si vous avez attribué une interface réseau avec IP locale sur vos jails, | Si vous avez attribué une interface réseau avec IP locale sur vos jails, | ||
Ligne 197: | Ligne 237: | ||
Par exemple, pour pf(4): | Par exemple, pour pf(4): | ||
- | < | + | < |
jailnet=" | jailnet=" | ||
- | |||
# ... | # ... | ||
- | |||
nat on $ext_if from $jailnet to any -> ($ext_if) | nat on $ext_if from $jailnet to any -> ($ext_if) | ||
</ | </ | ||
- | |||
- | Pensez à vérifier les valeurs de resolv.conf(5). Si vous avez suivi la procédure, ce devrait être une copie de celle de l' | ||
<note important> | <note important> | ||
- | Attention avant d' | + | Attention avant d' |
</ | </ | ||
+ | ===== DNS ===== | ||
+ | |||
+ | Pensez à vérifier les valeurs de resolv.conf(5). Si vous avez suivi la procédure, ce devrait être une copie de celle de l' | ||
+ | Pour donner accès à ce service à vos /jails/, assurez que ce dernier écoute sur des adresses autres que '' | ||
+ | Par exemple, associez une adresse dédiée à '' | ||
+ | |||
+ | <file perl rc.conf> | ||
+ | cloned_interfaces=" | ||
+ | ifconfig_lo1=" | ||
+ | ifconfig_lo1_ipv6=" | ||
+ | </ | ||
+ | |||
+ | voire ajouter d' | ||
+ | <file perl rc.conf> | ||
+ | ifconfig_lo1_alias0=" | ||
+ | ifconfig_lo1_ipv6_alias0=" | ||
+ | </ | ||
+ | |||
+ | ou, à la volée: | ||
+ | <code bash> | ||
+ | ifconfig lo1 inet 192.168.0.1 netmask 255.255.255.0 alias | ||
+ | ifconfig lo1 inet6 fd00::1 prefixlen 64 alias | ||
+ | </ | ||
+ | |||
+ | Ensuite configurez unbound(8) pour écouter sur cette addresse: | ||
+ | <file yaml unbound.conf> | ||
+ | interface: 192.168.0.1 | ||
+ | interface: fd00::1 | ||
+ | access-control: | ||
+ | access-control: | ||
+ | </ | ||
+ | |||
+ | ou pour tout l' | ||
+ | <file yaml unbound.conf> | ||
+ | interface: lo1 | ||
+ | </ | ||
+ | |||
+ | configurez alors les '' | ||
===== Services IP ===== | ===== Services IP ===== | ||
Ligne 221: | Ligne 295: | ||
jail_net=" | jail_net=" | ||
# ... | # ... | ||
- | nat on $ext_if from $jail_net to any -> ($ext_if) | + | nat on $ext_if |
- | nat on $ext_if inet6 from $jail_git to any -> ($ext_if) | + | nat on $ext_if inet6 from $jail_git to any -> $ext_if:0 |
rdr pass on $ext_if proto tcp from any to ($ext_if) port 9418 -> 192.168.0.13 port 9418 | rdr pass on $ext_if proto tcp from any to ($ext_if) port 9418 -> 192.168.0.13 port 9418 | ||
rdr pass on $ext_if inet6 proto tcp from any to ($ext_if) port 9418 -> $jail_git port 9418 | rdr pass on $ext_if inet6 proto tcp from any to ($ext_if) port 9418 -> $jail_git port 9418 | ||
</ | </ | ||
+ | <callout type=" | ||
+ | En //IPV6//, on demande explicitement ('': | ||
+ | En cas de doute, préciser l' | ||
+ | '' | ||
+ | </ | ||
- | ====== Mettre à jour ====== | + | |
+ | ===== Mettre à jour ===== | ||
Il suffit de demander à freebsd-update(8). | Il suffit de demander à freebsd-update(8). | ||
- | ===== configuration | + | ==== configuration ==== |
freebsd-update(8) suit par défaut la configuration le fichier ''/ | freebsd-update(8) suit par défaut la configuration le fichier ''/ | ||
Ligne 279: | Ligne 359: | ||
- | ===== Lancer | + | ==== Lancer ==== |
Utilisez le fichier de configuration et donnez à freebsd-update(8) les bonnes informations: | Utilisez le fichier de configuration et donnez à freebsd-update(8) les bonnes informations: | ||
Ligne 287: | Ligne 367: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | freebsd-update -f / |
</ | </ | ||
Notez que vous pouvez automatiser le processus en demandant directement à la //jail// quelle version elle fait tourner: | Notez que vous pouvez automatiser le processus en demandant directement à la //jail// quelle version elle fait tourner: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | jexec jailname freebsd-version -u |
- | 12.1-RELEASE-p4 | + | 13.2-RELEASE |
</ | </ | ||
Utilisez automatiquement cette valeur dans un script par: | Utilisez automatiquement cette valeur dans un script par: | ||
<code bash> | <code bash> | ||
- | root@popeye:# | + | freebsd-update -f / |
</ | </ | ||
+ | |||
+ | En cas de mise à niveau, vers une version majeure plus récente, procédure est un peu plus longue. | ||
+ | <code bash> | ||
+ | jail -r jailname | ||
+ | freebsd-update -f / | ||
+ | freebsd-update -f / | ||
+ | jail -c jailname | ||
+ | freebsd-update -f / | ||
+ | pkg -j jailname bootstrap -f | ||
+ | pkg -j jailname upgrade | ||
+ | jail -rc jailname | ||
+ | </ | ||
+ | ===== Ports ====== | ||
+ | |||
+ | Utilisez des [[ports: | ||
+ | Par exemple, supprimer tout ce qui ressemble à une documentation, | ||
+ | <file make / | ||
+ | OPTIONS_UNSET=DOC DOCS NLS X11 EXAMPLES EXAMPLE XCB WAYLAND DEBUG TEST TESTS OPENGL DTRACE INFO BE_STANDARD | ||
+ | OPTIONS_UNSET+=CUPS MANPAGES | ||
+ | DEFAULT_VERSIONS+= imagemagick=6-nox11 | ||
+ | # | ||
+ | </ | ||
===== En savoir plus ===== | ===== En savoir plus ===== | ||
Ligne 305: | Ligne 407: | ||
<alert type=" | <alert type=" | ||
* [[https:// | * [[https:// | ||
- | * '' | + | * '' |
* '' | * '' | ||
+ | * [[https:// | ||
</ | </ |