module

Beryl::CLI::ZpoolCreate

Sous-commande beryl zpool-create <host> : crée les pools data déclarés (freebsd.zfs.<nom>) qui n'existent pas encore sur un serveur DÉJÀ installé. bootstrap ne les crée qu'à l'installation ; ici, cas d'un disque ajouté après coup ou d'une VM FreeBSD invitée (recette kvm-freebsd-guest), installée depuis une image et jamais bootstrapée.

Mêmes règles que bootstrap : une partition GPT alignée 1 Mio par disque, labellisée <pool><i> (pool sur /dev/gpt/…), ashift 12, chiffrement ZFS natif avec la clé 256 bits du poste (~/.config/beryl/<société>/<domaine>/ <host>.key, générée si absente, et rangée dans le coffre [tang] de la société, cf. Beryl::ZfsKeys). La clé voyage sur stdin, jamais en argument ni sur le disque du serveur. Pool chiffré exclu du cache : au démarrage, il attend beryl unlock ou clevis-zfs (mode tang, après beryl tang-enroll).

Garde-fous : pool déjà présent (importé ou importable) → sauté ; disque absent ou NON VIERGE (table de partitions, système de fichiers, label ZFS) → refus, rien n'est effacé. DRY-RUN par défaut (sondes en lecture seule), --apply pour créer.

Constants

ASHIFT = 12

Plancher de bootstrap (Bootstrap::MIN_ASHIFT) : 4 K, valable pour un disque virtuel qui annonce 512 octets comme pour un disque 4Kn.

EXIT_DISK_REFUSE = 6
EXIT_NO_POOLS = 5
EXIT_OK = 0
EXIT_SSH_FAILED = 2
EXIT_UNEXPECTED = 3
EXIT_USAGE = 1

Class methods

create_script(name : String, raid : Int32, devices : Array(String), mountpoint : String, encrypted : Bool) : String

Script de création (un sh -c côté serveur). Pool chiffré : la clé hex arrive sur stdin (keylocation=prompt) et cachefile=none le garde hors de l'import automatique du démarrage. Pur.

Source
run(config_root : String, args : Array(String)) : Int32
Source
vdev(raid : Int32, devices : Array(String)) : String

Fragment vdev d'un zpool create (même convention que bootstrap). Pur.

Source