Einleitung

Ein Update von Bastille Jails ist erfreulich einfach, insbesondere wenn sogenannte "Thin Jails" verwendet werden. Thin Jails enthalten keine Daten des Basissystems. Diese werden als "read-only" in die Jail integriert. Das bedeutet, dass 100 Jails auf eine Basisinstallation zugreifen. Wird diese Basis aktualisiert, werden alle 100 Jails gleichzeitig aktualisiert.

Bastille

Mit diff -u /usr/local/etc/bastille/bastille.conf /usr/local/etc/bastille/bastille.conf.sample immer vorher kontrollieren, falls es Änderungen zu der Konfigurationsvorlage gegeben haben sollte. Der Rest ist schnell erledigt

Updates XX.Y

Dies sind normale Updates innerhalb des Releases, diese Updates wirken sich direkt auf alle Jails aus.

bastille update XX.Y-RELEASE     # Aktuelles Release einsetzen
bastille cmd ALL certctl rehash  # Zertifikate neu einlesen
bastille restart ALL             # Alle Jails neu starten

Alte Jails laufen auf neuerem System, aber nicht unbedingt umgekehrt.

Release Upgrades XX.Y - XX.Z

Anders verhält es sich bei Releasewechseln, z.B. von 14.1-RELEASE auf 14.2-RELEASE. Da die Basis per Nullfs eingebunden wird, ist eine Anpassung der fstab des jeweiligen Jails notwendig. Ansonsten ist ein Update wieder sehr einfach:

bastille stop ALL                      # Alle Jails stoppen
bastille bootstrap XX.Z-RELEASE update # Download des neuen Release
bastille list -a                       # Zeigt alle gestoppen Jails an
bastille edit JAILNAME fstab           # Verweis auf das neue Release hinterlegen
- /usr/local/bastille/releases/XX.Y-RELEASE /usr/local/bastille/jails/JAILNAME/root/.bastille nullfs ro 0 0
+ /usr/local/bastille/releases/XX.Z-RELEASE /usr/local/bastille/jails/JAILNAME/root/.bastille nullfs ro 0 0
bastille start ALL
bastille list release                  # List Releases
bastille destroy XX.Z-RELEASE          # OPTIONAL: Altes ungenutztes Release entfernen 

"Thick Jails" sind komplette Systeme, die wie normale FreeBSD-Installationen aktualisiert werden.

Pakete aktualisieren

Nach einem Update ist es ratsam, die Pakete zu aktualisieren. Dies kann auch wieder für alle Jails gleichzeitig geschehen.

Informiert euch VORHER, ob es wichtige Änderungen an euren installierten Diensten gibt und ob Anpassungen vorgenommen werden müssen. Im Zweifelsfall lieber ein manuelles Update innerhalb der Jail durchführen. Wem ein bastille restart ALL zu weitreichend ist, kann die Dienste innerhalb der Jails natürlich manuell neu starten, z.B. mit bastille cmd JAILNAME service nginx restart wird der Dienst NGINX wird im Jail JAILNAME neu gestartet.

bastille cmd ALL pkg upgrade -y    # Alle Pakete in allen Jails aktualisieren
bastille cmd ALL pkg autoremove -y # Alte nicht mehr benötigte Pakete entfernen
bastille cmd ALL pkg clean -y -a   # Alte Downloads entfernen
bastille restart ALL               # Alle Jails neu starten

Voilá