FreeBSD - Iocage

0. C'est quoi ?

Iocage est un gestionnaire de jails écrit en python3 très simple d'utilisation et de configuration. C'est mon outil de prédiulection pour gérer les jails et il est depuis la version 11.2 celui par défaut de FreeNAS

1. Installation

Pour l'installation comme toujours vous pouvez utiliser pkg ou les ports.

pkg install py36-iocage

cd /usr/ports/sysutils/iocage/ && make install clean

2. Configuration

Une fois iocage installé, la configuration se fait à l'aide de la commande iocage.

Vous devrez pour commencer définir la pool zfs dans laquelle iocage va pouvoir travailler. Dans mon cas ma pool de ssd est zroot je vais donc faire iocage activate zroot. Vous pouvez voir vos pools zfs à l'aide de zpool status ou zfs list

Pour de meilleurs performances les développeur conseillent d'activer fdescfs avec mount -t fdescfs null /dev/fd.

Pour rendre ce changement permanent vous pouvez ajouter cette ligne à votre fstab : fdescfs /dev/fd fdescfs rw 0 0

3. Usage

L'usage est lui aussi très simple.

Premierement il va nous falloir télécharger la version de FreeBSD qui nous intérèssent avec iocage fetch

zutsuu% sudo iocage fetch
[0] 9.3-RELEASE (EOL)
[1] 10.1-RELEASE (EOL)
[2] 10.2-RELEASE (EOL)
[3] 10.3-RELEASE (EOL)
[4] 10.4-RELEASE (EOL)
[5] 11.0-RELEASE (EOL)
[6] 11.1-RELEASE (EOL)
[7] 11.2-RELEASE

Type the number of the desired RELEASE
Press [Enter] to fetch the default selection: (Not a RELEASE)
Type EXIT to quit:

Dans mon cas je vais choisir la 11.2. Iocage va se charger de récupérer et extraire les archives base.txz, lib32.txz, doc.txz et src.txz. Avec une connection comme la mienne de 10Mbit/s l'opération prend moins de 10 minutes.

Nous pouvons maintenant créer notre première jail avec la commande iocage create. Cela dit, j'aime préparer la création de mes jails avec un fichier pkg.json qui me permet d'installer des paquets en même temps que la jail est créer.

Pour ce faire on édite le fichier /iocage/pkgs.json pour y mettre le noms des paquets qui nous intérèssent.

{
    "pkgs": [
    "nano",
    "python"
    ]
}

Pour la création de la jail il nous faut définir son nom avec -n, les paquets à préinstaller avec -p, son interface et son adresse avec ip4_addr= et la release que l'on va utiliser avec -R. On obtient donc une commande comme celle-ci :

iocage create -n syncthing -p /iocage/pkgs.json ip4_addr="bce1|192.168.1.111/24" -r 11.2-RELEASE

On peut demander à iocage de nous fournir une liste des jails crées avec iocage list ou pour plus de détails iocage list -l. On peut donc voir notre jail avec les paramètres que nous avons définis lors de sa création. Pour démarrer la jail on utilisera iocage start syncthing. Si l'on veux que la jail démarre automatiquement en même temps l'host on peut le faire faire par iocage avec iocage set boot=on syncthing

Une fois la jail en service on peut acceder à son terminal avec iocage console syncthing

zutsuu% sudo iocage console syncthing
Last login: Thu Nov  8 21:13:30 on pts/0
FreeBSD 12.0-BETA3 r340039 GENERIC

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

Edit /etc/motd to change this login announcement.
root@syncthing:~ # freebsd-version
11.2-RELEASE-p4
root@syncthing:~ #

Voilà pour l'usage basique d'iocage. Pour un usage plus poussé, par exemple l'utilisation de VNET, vous pouvez consulter la documentation officielle ou me poser des questions sur twitter ;p

Next Post