pot – Ein Jail-Manager für FreeBSD

pot: Ein weitere Jail-Manager

pot ist ein weiterer Jail-Manager für FreeBSD. In dem Artikel möchte ich dir zeigen, wie du das Tool zum Laufen bringst und deine erste grundlegende Jail mit pot erstellst. In der Vergangenheit habe ich bereits sehr viel über Bastille geschrieben.

Attention: For the english version, click here!

Ähnlich wie Bastille wurde pot in Shell geschrieben und bedarf daher nur wenig Speicherplatz. Der Download samt Abhängigkeiten beträgt circa 7 MB und auf der Festplatte werden circa 35 MB beansprucht. Voraussetzung ist, es wird ZFS als Dateisystem benötigt und du benötigst root-Zugriff auf deinem System. Ist das gegeben, kannst du direkt die Software installieren.

Installation von pot

Wie immer, solltest du zuerst dein Repository updaten:

pkg update 

Danach können wir auch schon den Jail-Manager installieren:

pkg install pot

Nach der erfolgreichen Installation weist uns pot darauf hin, zunächst die Initalisierung durchzuführen. Das geschieht durch folgenden Befehl:

pot init

Die erste Jail erstellen

Im Prinzip ist pot genau so benutzerfriendlich, wie andere Jail-Manager. Mittels dem Befehl pot create kannst du die erste Jail erstellen. Stell vorher am Besten sicher, dass du root-Zugriff auf deinem System hast.

pot create [-hv] -p potname [-N network-type] [-i ipaddr]
           [-l lvl] [-f flavour] [-b base|-P basepot]
           [-d dns] [-t type]
  -h print this help
  -v verbose
  -k keep the pot, if create fails
  -p potname : the pot name (mandatory)
  -l lvl : pot level (only for type multi)
  -b base : the base pot
  -P pot : the pot to be used as reference
  -d dns : pot dns resolver configuration, one of
           inherit*       - inherit from jailhost (*default)
           pot            - the pot configured in POT_DNS_NAME
           custom:<file>  - copy <file> into pot configuration
           off            - leave resolver config unaltered
  -f flavour : flavour to be used
  -t type: pot file system layout, one of
           single         - the pot is based on a unique ZFS dataset
           multi*         - the pot is composed by a classical
                            collection of 3 ZFS datasets (*default)
  -N network-type: pot network layout, one of
           inherit*       - inherit the host network stack (*default)
           alias          - configure a static ip alias directly on
                            the host's NIC
           public-bridge  - use the common internal public bridge
           private-bridge - use an internal private bridge (with -B)
  -i ipaddr : IP address selection, one of
           auto*          - automatically assign address (*default),
                            only works with (public|private)-bridge
           ipaddr         - mandatory with alias,
                            also works with (public|private)-bridge
  -B bridge-name : the name of the private bridge to be used
  -S network-stack : the network stack (ipv4, ipv6 or dual)

Das Menü bietet alles, was man braucht und ist dabei schlank und übersichtlich.

pot create -p meineBox -b 13.2 -d inherit -t single -N alias -i 192.168.0.10 -S ipv4

Hiermit erstellst du eine Jail mit folgenden Eigenschaften:

  • -p: Der Name lautet meineBox
  • -b: Das Basesystem basiert auf FreeBSD 13.2
  • -d: Es soll der DNS-Server des Hostsystems verwendet werden
  • -t: Es wird ein ZFS dataset verwendet
  • -N: Es wird ein Alias direkt auf die Netzwerkkarte des Hostsystems gesetzt
  • -i: Die IP der Jail lautet 192.168.0.10
  • -S: Es wird ausschließlich IPv4 verwendet

Nach einer Weile hast du deine erste Jail mit pot erstellt. Der Output sollte ungefähr so aussehen:

root@byte-sized:/home/mitarbyter # pot create -p meineBox -b 13.2 -d inherit -t single -N alias -i 192.168.0.10 -S ipv4
===>  Creating a new pot
===>  pot name     : meineBox
===>  type         : single
===>  base         : 13.2
===>  pot_base     :
===>  level        : 0
===>  network-type : alias
===>  network-stack: ipv4
===>  ip           : 192.168.0.10
===>  bridge       :
===>  dns          : inherit
===>  flavours     :
===>  Fetching FreeBSD 13.2
===>  Extract the tarball

Jetzt kannst du direkt in deine Jail wechseln, nutze dafür folgenden Befehl:

root@byte-sized:/home/mitarbyter # pot run meineBox
===>  Starting the pot meineBox
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
32-bit compatibility ldconfig path: /usr/lib32
Updating motd:.
Creating and/or trimming log files.
Clearing /tmp (X related).
Updating /var/run/os-release done.
Starting syslogd.
Starting sendmail_submit.
Starting sendmail_msp_queue.
Starting cron.

Wed Aug 30 21:23:59 UTC 2023


root@meineBox:~ #

Hierbei wird die Jail gestartet und du springst direkt in deinen angelegten Container. Dies erkennst du am Command Prompt. Bei mir lautet dieser jetzt root@meineBox. Nun kannst du dich innerhalb deiner Jail frei bewegen, Software installieren und beginnen sie weiter zu konfigurieren.

Wenn du deine Jail wieder verlassen möchtest, tippe einfach exit und du landest wieder auf deinem Hostsystem.

Willst du deinen Container irgendwann wieder löschen, verwende folgendes Kommando:

pot destroy -p meineBox

Fazit

Das soll der Schnelleinstieg zu pot gewesen sein. In naher Zukunft werde ich bestimmt noch öfters darüber schreiben, da ich persönlich pot für recht interessant halte. Im direkten Vergleich zu Bastille, mit dem ich sehr gerne gearbeitet habe, scheint mir die Erstellung von Containern mit pot tatsächlich noch einfacher. Nachteil ist allerdings, dass reine Linux-Jails aktuell nicht möglich sind, was wiederrum für Bastille spricht. Es kommt also, wie so oft, ganz auf das Einsatzgebiet an.


pot – Another Jail Manager for FreeBSD

pot is another jail manager for FreeBSD. In the article I want to show you how to get the tool working and create your first basic jail with pot. In the past I have written a lot about Bastille. Similar to Bastille, pot is written in shell and therefore requires very little memory. The download including dependencies is about 7 MB and on disk about 35 MB. Prerequisite is that you need ZFS as file system and root access on your system. If this is given, you can install the software directly.

Installing pot

As always, you should update your repository first:

pkg update

After that we can install the jail manager:

pkg install pot

After the successful installation pot tells us to do the initialization first. This is done by the following command:

pot init

Create the first jail

In principle, pot is as user-friendly as other jail managers. You can create the first jail using the pot create command. Make sure you have root access to your system before you create the jail.

pot create [-hv] -p potname [-N network-type] [-i ipaddr]
           [-l lvl] [-f flavour] [-b base|-P basepot]
           [-d dns] [-t type]
  -h print this help
  -v verbose
  -k keep the pot, if create fails
  -p potname : the pot name (mandatory)
  -l lvl : pot level (only for type multi)
  -b base : the base pot
  -P pot : the pot to be used as reference
  -d dns : pot dns resolver configuration, one of
           inherit*       - inherit from jailhost (*default)
           pot            - the pot configured in POT_DNS_NAME
           custom:<file>  - copy <file> into pot configuration
           off            - leave resolver config unaltered
  -f flavour : flavour to be used
  -t type: pot file system layout, one of
           single         - the pot is based on a unique ZFS dataset
           multi*         - the pot is composed by a classical
                            collection of 3 ZFS datasets (*default)
  -N network-type: pot network layout, one of
           inherit*       - inherit the host network stack (*default)
           alias          - configure a static ip alias directly on
                            the host's NIC
           public-bridge  - use the common internal public bridge
           private-bridge - use an internal private bridge (with -B)
  -i ipaddr : IP address selection, one of
           auto*          - automatically assign address (*default),
                            only works with (public|private)-bridge
           ipaddr         - mandatory with alias,
                            also works with (public|private)-bridge
  -B bridge-name : the name of the private bridge to be used
  -S network-stack : the network stack (ipv4, ipv6 or dual)

The menu offers everything you need and is lean and clear.

pot create -p myBox -b 13.2 -d inherit -t single -N alias -i 192.168.0.10 -S ipv4

With this you create a jail with the following properties:

  • -p: The name is myBox
  • -b: The base system is based on FreeBSD 13.2.
  • -d: The DNS server of the host system will be used.
  • -t: A ZFS dataset will be used.
  • -N: An alias is set directly to the network card of the host system
  • -i: The IP of the jail is 192.168.0.10
  • -S: Only IPv4 is used

After a while you have created your first jail with pot. The output should look something like this:

root@byte-sized:/home/mitarbyter # pot create -p meineBox -b 13.2 -d inherit -t single -N alias -i 192.168.0.10 -S ipv4
===>  Creating a new pot
===>  pot name     : meineBox
===>  type         : single
===>  base         : 13.2
===>  pot_base     :
===>  level        : 0
===>  network-type : alias
===>  network-stack: ipv4
===>  ip           : 192.168.0.10
===>  bridge       :
===>  dns          : inherit
===>  flavours     :
===>  Fetching FreeBSD 13.2
===>  Extract the tarball
Now you can switch directly to your jail, use the following command:
root@byte-sized:/home/mitarbyter # pot run meineBox
===>  Starting the pot meineBox
ELF ldconfig path: /lib /usr/lib /usr/lib/compat
32-bit compatibility ldconfig path: /usr/lib32
Updating motd:.
Creating and/or trimming log files.
Clearing /tmp (X related).
Updating /var/run/os-release done.
Starting syslogd.
Starting sendmail_submit.
Starting sendmail_msp_queue.
Starting cron.

Wed Aug 30 21:23:59 UTC 2023


root@meineBox:~ #

Here the jail is started and you jump directly into your created container. You can recognize this by the command prompt. For me this is now root@myBox. Now you can move freely within your jail, install software and start configuring it.

If you want to leave your jail again, just type exit and you will end up back on your host system.

If you want to delete your container at some point, use the following command:

pot destroy -p myBox

Conclusion

This should be the quick introduction to pot. In the near future I will certainly write more about it, because I personally think pot is quite interesting. In direct comparison to Bastille, which I really liked to work with, it seems to be even easier to create containers with pot. The disadvantage, however, is that pure Linux jails are currently not possible, which speaks for Bastille. So, as often, it all depends on the use case.

Start the discussion

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert