Beryl::Config::Root
Point d'entrée de la configuration beryl (ADR-014).
Regroupe :
- le socle
_default.yml(Hash brut, commun à toutes sociétés) - les sociétés chargées (
accounts : Hash<String, Account>), chacune contenant ses domaines .env.ymlpour les credentials indexés[account][provider]
Les opérations habituelles (résolution d'un host, obtention de la config mergée) passent par des méthodes de cette classe.
Constructors
Charge une arborescence complète depuis le disque. ssh_dir
est le dossier où chercher les clés SSH référencées par nom
(ex. philippe.aloli.fr.pub → <ssh_dir>/philippe.aloli.fr.pub).
Paramétrable pour les tests qui utilisent des fixtures.
Class methods
Racine de config par défaut (dynamique : honore
$XDG_CONFIG_HOME si défini au runtime, sinon
~/.config/beryl/). Voir Beryl::Xdg.config_dir.
Instance methods
Toutes les sociétés qui ont un domaine de ce nom. Rare qu'il y
en ait plusieurs, mais possible (ex: une société ALOLI et une
société cliente ACME possèdent toutes deux example.com).
Tous les hosts de toutes les sociétés, par FQDN.
Pratique pour beryl list-hosts et pour les recherches globales.
Résout un nom CLI vers un host effectif mergé.
Règles (premier match gagne) :
--account=A+--domain=D: cherche dans A/D directement (host du fichier si présent, sinon virtuel).--domain=Dseul : cherche D dans toutes les sociétés. LèveAmbiguousHostsi plusieurs sociétés ont le domaine et que le host n'est pas unique parmi elles.- Suffix match :
rails01.aloli.net— cherche un domainealoli.netdans toutes les sociétés. Si plusieurs sociétés l'ont ET que le host existe dans une seule → utilisé. - Recherche nom court + provider-name dans tous les hosts de toutes les sociétés. Unique → utilisé ; multi → ambigu.
- Sinon →
HostNotFound.
Résultat : un ResolvedHost (host effectif + société + domaine + groupe).