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

  1. Ein Verzeichnis pro Umgebung/Labor – Gruppieren Sie zusammenhängende Umgebungen in Unterverzeichnisse.
  2. globals() für gemeinsame Parameter – Domain, Netzwerk, VNC-Bindings.
  3. CLI-Überschreibung – Halten Sie die CBSDfile als Vorlage und ändern Sie Werte über die Kommandozeile.
  4. Volumes für persistente Datensysdir_volume=1 für Anwendungen mit persistenten Daten.
  5. skel/ für statische Dateien — Konfigurationsdateien, Skripte, Vorlagen.
  6. Labore für komplexe Sets — Unterverzeichnisse mit gemeinsamer Konfiguration über preup().

Verwandte Seiten