Erweiterte Funktionen von CBSDfile
Volume-Umgebungen
Für Anwendungen mit persistenten Daten können Systemverzeichnisse in separate ZFS-Datasets ausgelagert werden. Dies vereinfacht die Sicherung und Migration.
Aktivierung von Volumes
In der CBSDfile-Konfiguration:
jail_app1()
{
sysdir_volume=1
ip4_addr="10.0.0.30"
}
Bei sysdir_volume=1 wird das Verzeichnis ~cbsd/jails-system/<jname> nach ~cbsd/VOLUMES/<jname>-system verschoben.
Direkte Mounts über fstab.local
Erstellen Sie im CBSDfile-Verzeichnis die Datei jails-system/fstab.local, um zusätzliche nullfs-Mounts zu definieren:
/data/jails/app1/data /usr/local/www/nginx nullfs ro 0 0
/data/shared/logs /var/log/myapp nullfs rw 0 0
Diese Mounts werden automatisch beim Erstellen der Jail angewendet.
Skelettverzeichnisse (skel)
Der skel/-Ordner neben der CBSDfile ermöglicht das automatische Kopieren von Dateien in die Jail bei der Erstellung. Die Verzeichnisstruktur innerhalb von skel/ wird im Dateisystem der Jail reproduziert.
Struktur
my-jail/
├── CBSDfile
└── skel/
├── etc/
│ ├── rc.conf
│ └── ssh/
│ └── sshd_config
└── usr/
└── local/
└── etc/
└── pkg/
└── FreeBSD.conf
Dateien werden bei der Erstellung in die Jail kopiert. Der skel/-Ordner wird automatisch verarbeitet, eine explizite Angabe in der CBSDfile ist nicht erforderlich.
Deaktivieren von skel
jail_test1()
{
applytpl=0
}
Lab-Umgebungen und Hierarchie
Für komplexe Konfigurationen wird empfohlen, eine hierarchische Verzeichnisstruktur zu verwenden. Ein Verzeichnis = ein Satz an Umgebungen (Labor).
Empfohlene Struktur
cbsdfile-recipes/
├── jail/
│ ├── app1/
│ │ └── CBSDfile
│ └── web/
│ └── CBSDfile
├── bhyve/
│ ├── db/
│ │ └── CBSDfile
│ └── api/
│ └── CBSDfile
└─ labs /
├─ lab1 /
├─ config # Gemeinsame Variablen (IP-Adressen usw.)
├─ redisro /
│ ├─ C B S D f i l e
├─ redisrw /
├─ C B S D f i l e
Labor-Konfiguration
In jeder CBSDfile der Laborumgebung werden gemeinsame Variablen eingebunden:
preup()
{
. ../config
}
Die Datei config enthält die gemeinsamen Variablen:
REDIS_RO_IP="10.0.0.20"
REDIS_RW_IP="10.0.0.21"
REDIS_DOMAIN="lab1.example.com"
Start der Laborumgebung
# Option 1: In das Verzeichnis mit der CBSDfile wechseln
cd cbsdfile-recipes/labs/lab1/redisro/ && cbsd up
# Option 2: Pfad zur CBSDfile direkt angeben
cbsd up cbsdfile=/full-path/to/cbsdfile-recipes/labs/lab1/redisrw/CBSDfile
Hierarchische Kategorien
CBSDfile unterstützt verschachtelte Kategorien. Eine Funktion im Format labs_<name>() wird über jcreate erstellt. Die Kategorie im Funktionsnamen bestimmt den Operationstyp:
# Erstellt eine Jail via jcreate
jail_web1() { ... }
# Erstellt eine bhyve-VM via bcreate
bhyve_db1() { ... }
# Erstellt eine Jail (die Kategorie labs verwendet standardmäßig jcreate)
labs_test1() { ... }
Empfehlungen
- Ein Verzeichnis pro Umgebung/Labor – Gruppieren Sie zusammenhängende Umgebungen in Unterverzeichnisse.
- globals() für gemeinsame Parameter – Domain, Netzwerk, VNC-Bindings.
- CLI-Überschreibung – Halten Sie die CBSDfile als Vorlage und ändern Sie Werte über die Kommandozeile.
- Volumes für persistente Daten —
sysdir_volume=1für Anwendungen mit persistenten Daten. - skel/ für statische Dateien — Konfigurationsdateien, Skripte, Vorlagen.
- Labore für komplexe Sets — Unterverzeichnisse mit gemeinsamer Konfiguration über
preup().