Iocage¶
- Homepage: https://iocage.io/
- Github: https://github.com/iocage/iocage
Alternativen:
- CBSD: https://www.bsdstore.ru/en/about.html (kann weit mehr als nur jails verwalten)
- EZJail: http://erdgeist.org/arts/software/ezjail/ (letzes Update von 2015)
- JADM: https://github.com/NikolayDachev/jadm (letztes Update von 2015)
- QJail: http://qjail.sourceforge.net/
mini howto:
https://www.truenas.com/community/threads/iocage-helper-thread.59988/
Setup¶
Vimage / VNET support¶
Die Variante Shared IP gilt als ausgereifter. Arbeitet man jedoch mit vielen verschiedenen VLANs erscheint es mir sinnvoller mit bridges und VLAN zu arbeiten und gleichzeitig VNET in FreeBSD zu nutzen.
Ab FreeBSD 12 ist Vimage / VNET Support bereits fester Bestandteil des Kernel und muss nicht mehr manuell dazu kompiliert werden.
FreeBSD 11 und älter¶
Shared IP Betrieb mag zwar erprobter sein, VNET erscheint mir jedoch definitv die bessere Lösung. Um sie nutzen zu können muss man den Kernel mit anderen Optionen kompilieren.
Neuerdings nutzt FreeBSD git zur Versionierung des Kernels und der Ports. Für ältere Systeme bitte in die Historie dieses Artikels schauen um den Kernel per SVN auszuchecken.¶
Dieser Teil wird auch hier beschrieben: https://forums.freebsd.org/threads/installing-and-updating-the-src-tree-with-git.78367/
pkg install git
cd /usr/src
git clonehttps://git.freebsd.org/src.gitssh://anongit@git.freebsd.org/src.git
vnet config Datei benutzen für die Kernel Kompilierung
cp -v /usr/src/share/examples/jails/VIMAGE /usr/src/sys/amd64/conf/VIMAGE
Kernel kompilieren
cd /usr/src make KERNCONF=VIMAGE kernel
Alternativ mit 8 Kernen kompilieren
make -j 8 KERNCONF=VIMAGE kernel
Paremeter in /etc/sysctl.conf platzieren:
net.inet.ip.forwarding=1 # Enable IP forwarding between interfaces
net.link.bridge.pfil_onlyip=0 # Only pass IP packets when pfil is enabled
net.link.bridge.pfil_bridge=0 # Packet filter on the bridge interface
net.link.bridge.pfil_member=0 # Packet filter on the member interface
Installation iocage¶
pkg install py38-iocage
Benutzung aktivieren¶
ZFS Volume muss vorhanden sein, in diesem Beispiel heißt es zroot
iocage activate zroot
Vorhandene OS Abbilder holen¶
iocage fetch
Bestimmte Version
iocage fetch -r 12.2-RELEASE
Management Jails¶
Gast Erstellen¶
iocage create -n test -r 12.2-RELEASE
statische IPs und Nutzung von Template
iocage create -n syncthing -r 11.2-RELEASE boot=on vnet=on dhcp=off ip4_addr="vnet0|10.10.101.62/24" defaultrouter="10.10.101.199" ip6_addr="vnet0|2001:1234:1234:1b:5679:a79:752d:2265/64" defaultrouter6="2001:1234:1234:1b:5054:ff:fe44:1062"
In this exampel the host is completely on autoconf, as well as IPv4 and IPv6
iocage create -n syncthing -r 12.2-RELEASE vnet=on dhcp=on bpf=1 ip6_addr="vnet0|accept_rtadv"
Das alleine genügt leider nicht, innerhalb des Gastes sind auch Anpassungen nötig in /etc/rc.conf
ipv6_activate_all_interfaces="YES"
rtsold_enable="YES"
ifconfig_epair0b="SYNCDHCP"
ifconfig_epair0b_ipv6="inet6 auto_linklocal accept_rtadv autoconf"
Mit Gast verbinden¶
iocage console <<jailname>>
Zum trennen entweder exit tippen oder CTRL + D
update jail auf letztes RELEASE¶
iocage update <<jailname>>
stop jail¶
iocage stop <<jailname>>
start jail¶
iocage start <<jailname>>
Auflistung von Jails¶
Auflistung von Jails in Kurzform
iocage list
Auflistung von Jails ausführlicher
iocage list -l
Auflistung vorhandener Templates in Kurzform
iocage list -t
Auflistung vorhandener Templates ausführlicher
iocage list -l -t
Auflistung von Plugin Jails
iocage list -P
mount zfs volume¶
iocage fstab -a <<jailname>> <<path>>
unmount zfs volume¶
iocage fstab -r <<jailname>> <<path>>
iocage Plugins¶
Index der verfügbaren Standardplugins:
https://raw.githubusercontent.com/freenas/iocage-ix-plugins/master/INDEX
Github Repo mit den *.json Dateien
https://github.com/freenas/iocage-ix-plugins
Auflistung verfügbarer Plugins
iocage list -PR
Auflistung installierter Plugins
iocage list -P
Plugin abrufen und mit DHCP starten
iocage fetch -P syncthing ip4_addr="igb0|dhcp"
Plugin abrufen und mit IP starten
iocage fetch -P syncthing ip4_addr="igb0|192.168.2.10"
iocage Templates¶
Man kann in iocage auch mit Templates arbeiten. Dies hilft bei der Inbetriebnahme von Jails. ACHTUNG: Templates helfen nicht viele, bereits existierende Jails auf einem Versionsstand zu halten. Dazu sollte man lieber Tools wie Ansible verwenden. Ansonsten sind folgende Dinge bei der Benutzung von Templates zu beachten:
- Um ein Template modifizieren zu können muss man es erst wieder zu einer jail zurück wandeln mit:
iocage set template=0 syncthing - Man sollte ein Template nicht umbenennen, wenn es Jails gibt, die von dem Template abstammen