module

Beryl::SshConfig

Accès SSH « à la main » à TOUS les hosts gérés par beryl : un fichier par société, ~/.ssh/beryl--<société>.conf, inclus en tête de ~/.ssh/config (Include beryl--*.conf). Chaque host y est joignable par son FQDN et par son nom court ; un host CACHÉ derrière le vRack l'est par son IP vRack et un ProxyCommand qui essaie son bastion préféré puis les autres (ResolvedHost#proxy_jumps) — même repli que les connexions de beryl. Les sauts lisent VOTRE config ssh (clé, agent) comme un ssh ordinaire.

Constants

FILE_PREFIX = "beryl--"

Fichiers générés (un par société) et ligne d'inclusion (chemin relatif à ~/.ssh, motif accepté par Include).

HEADER = "# Généré par `beryl ssh-config --apply` — ne pas modifier à la main."
INCLUDE_COMMENT = "# Hosts gérés par beryl (fichiers générés par beryl ssh-config)"
INCLUDE_LINE = "Include #{FILE_PREFIX}*.conf"
JUMP_TIMEOUT = 5

Délai par bastion avant de passer au suivant.

LEGACY_COMMENT = "# Hosts cachés derrière le vRack (fichier généré par beryl ssh-config)"
LEGACY_FILE = "beryl.conf"

Ancien fichier unique (0.6.124), remplacé par les fichiers par société.

LEGACY_INCLUDE = "Include #{LEGACY_FILE}"

Instance methods

file_name(account : String) : String
Source
jump_options(jumps : Array(String)) : Array(String)

Options ssh -o … du rebond pour un ssh système : ProxyJump s'il n'y a qu'un bastion, sinon ProxyCommand à replis. Vide sans rebond. Pur.

Source
legacy_generated?(content : String) : Bool

Ancien fichier unique à retirer : seulement s'il est bien de beryl. Pur.

Source
proxy_command(jumps : Array(String)) : String

sh -c '…' qui essaie chaque bastion dans l'ordre (ssh -W %h:%p) et annonce le repli sur stderr. sh -c : ssh lance la commande par exec, qui ne garderait pas les ||. Pur.

Source

Contenu des fichiers, par société (noms triés, hosts triés par FQDN). Un bloc par host, commun au FQDN et au nom court : adresse, port, user et clé de la fiche, rebond (un user en ligne de commande, ssh deploy@ke, l'emporte toujours). Nom court présent dans deux sociétés : FQDN seul. Hosts en ssh_config: false écartés.

Source
with_include(config : String) : String | Nil

~/.ssh/config avec l'Include en tête (l'ancien Include beryl.conf retiré), ou nil s'il n'y a rien à changer. En tête : hors de tout bloc Host (un Include dedans n'y vaudrait que pour ce bloc), et premières valeurs lues = celles qui l'emportent. Pur.

Source