Zum Inhalt

Iocage

Alternativen:

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