class

Beryl::Apply::SshdConfigSet

Inherits Beryl::Apply::Primitive < Reference < Object

Primitive sshd-config-set : pose une directive dans /etc/ssh/sshd_config.d/beryl.conf (fichier géré par beryl). Comme FreeBSD ne met PAS d'Include sshd_config.d/*.conf par défaut, la primitive l'ajoute EN TÊTE du sshd_config si absent — sinon le drop-in serait écrit mais jamais lu. En tête car sshd retient la PREMIÈRE valeur d'une directive → les drop-ins priment.

Idempotence : la directive est déjà présente avec la bonne valeur → skip. Sinon le fichier est réécrit, validé (sshd -t) et sshd est rechargé (service sshd reload).

Valeur RÉELLE : un drop-in lu AVANT beryl.conf (ordre alphabétique, ex. 10-beryl-bootstrap.conf du bootstrap) qui fixe la même directive l'emporte. S'il est à beryl (nom contenant « beryl »), la directive y est retirée ; sinon, échec qui nomme le fichier. Sans masque, la valeur effective (sshd -T) doit commencer par la valeur voulue (tolère ListenAddress 1.2.3.4 → 1.2.3.4:22) — sinon échec : autre source (sshd_config, bloc Match).

- sshd-config-set:
    key: PermitRootLogin
    value: "no"

Cas où la valeur dépend d'un état runtime (ex. IP de l'interface tailscale0 inconnue à l'écriture de la recette) : utiliser value_from_command à la place. La commande est exécutée côté serveur cible, son stdout strippé devient la valeur. Échec (exit ≠ 0 ou stdout vide) → la primitive fail.

- sshd-config-set:
    key: ListenAddress
    value_from_command: "tailscale ip -4"

Constants

HEADER = "# Géré par beryl (sshd-config-set). Ne pas éditer à la main.\n"
LINUX_PATH = "/etc/ssh/sshd_config.d/00-beryl.conf"

Linux : « 00- » pour passer AVANT les drop-ins du système (SUSE : 40-suse-crypto-policies.conf, 50-cloud-init.conf), lus dans l'ordre alphabétique — sshd retient la première valeur.

PATH = "/etc/ssh/sshd_config.d/beryl.conf"

Class methods

path(os : String) : String
Source

Instance methods

apply(shell : Shell, params : Hash(String, YAML::Any), dry_run : Bool, context : Context) : StepResult

params est le hash brut du step YAML (ex: {"packages" => [...]}), déjà interpolé par l'Executor. context porte les infos dérivées du host (cf. Context).

Source
name

Nom kebab-case utilisé comme clé de step dans les recettes (« pkg-install », « service-enable », …).

Source
systems

Systèmes sur lesquels la primitive sait agir. FreeBSD seul par défaut : une primitive portable (ou portée) le déclare en redéfinissant cette méthode. L'Executor refuse une primitive hors de sa liste.

Source