class

Beryl::Config::ResolvedHost

Inherits Reference < Object

Host résolu : résultat d'une recherche dans la Root. Porte le contexte (société, domaine, groupe éventuel) + la config effective mergée + un accès direct aux credentials via credentials_for.

Constructors

new(short_name : String, account : Account, domain : Domain, group : Group | Nil, node : HostNode, merged : Hash(YAML::Any, YAML::Any), env_file : EnvFile, virtual : Bool = false)
Source

Instance methods

account
Source
account_name
Source
all_declared_disks
Source
apply_all_credentials_to_env!

Injecte TOUTES les credentials de la société dans ENV (tous fournisseurs confondus). Utilisé par les CLI qui peuvent potentiellement appeler plusieurs APIs (ex: scan --dns qui touche au DNS provider + compute provider).

Source
apply_credentials_to_env!(provider : String, overwrite : Bool = true) : Int32

Injecte les credentials d'un provider dans ENV (pour les shards OVH/Scaleway qui lisent leurs variables depuis ENV). Retourne le nombre de variables posées.

Source
boot_zpool
Source
connection

Construit une SSH::Connection prête à l'emploi.

Source
credentials_for(provider : String) : Hash(String, String)

Credentials du (account, provider) pour ce host. Utilisé par les CLI qui font des appels API (rescue, bootstrap, scan…).

Source
data_zpools
Source
dedibox_server_id

ID entier Dedibox (stocké sous dedibox.server_id dans le YAML). Retourne la valeur sous forme de String pour homogénéité avec les autres providers ; le parsing Int32 se fait côté Beryl::Providers::Dedibox#request_rescue.

Source
dns_provider

DNS provider du domaine (qui gère la zone). Peut différer du provider (hébergeur) — cas typique : zone chez Gandi, serveurs chez OVH.

Source
domain
Source
domain_name
Source
env_file
Source
fqdn

FQDN reconstitué : <short_name>.<domaine>. Le groupe n'apparaît pas (règle figée : pas de rails01.web.aloli.net).

Exception : si short_name contient déjà un point, c'est un FQDN externe (nom hébergeur type ns3156789.ip-51-83-6.eu ou alias DNS qui ne relève pas du domaine aloli). On le garde tel quel — sans quoi on fabriquerait un ns3156789.ip-51-83-6.eu.aloli.net qui ne résout nulle part.

Source
freebsd_hash

Bloc freebsd: mergé (hash brut).

Source
freebsd_int(field : String) : Int32 | Nil
Source
freebsd_string(field : String) : String | Nil
Source
freebsd_string_array(field : String) : Array(String)
Source
freebsd_zfs_hash

Hash freebsd.zfs.* — syntaxe multi-pool.

Source
freebsd_zpool_hash

Hash freebsd.zpool.* — syntaxe single-pool legacy.

Source
group
Source
group_name
Source
identity_file

Chemin de la clé privée SSH à utiliser pour ce host.

Ordre de résolution :

  1. identity_file: explicitement déclaré dans le merge (YAML host, domaine, _account.yml ou _default.yml). Prime.
  2. Résolution par convention Aloli depuis ovh.ssh_key_name : le label côté OVH (ex: philippe-aloli-fr) est traduit en fichier local <ssh_dir>/philippe.aloli.fr.key. Permet de ne pas dupliquer l'info : la même clé est référencée par son nom côté provider et résolue automatiquement côté disque.
  3. Sinon nil. SSH::Connection lancera alors sans -i, et comme IdentitiesOnly=yes est forcé, l'auth publickey échouera avec un message clair (pas de fallback silencieux sur les clés par défaut du shell).
Source
merged
Source
node
Source
os

OS du host (freebsd, debian, ubuntu, …). Défaut : freebsd (historique beryl). L'architecture ADR-014 prévoit l'extension multi-OS, l'impl actuelle ne câble que FreeBSD.

Source
overlay_ip

IP overlay (mesh Headscale) déclarée dans le YAML host (overlay_ip: 100.64.x.y). Lue par ssh_host quand le mode transport global est :overlay — cf. Phase 4 de la roadmap Headscale dans la mémoire roadmap_beryl_headscale.md.

Source
ovh_service_name

Service name OVH. Pour un host déclaré, lu dans ovh.service_name. Pour un host virtuel (serveur neuf) dont provider: ovh est explicitement résolu ET dont le short_name contient un point (FQDN hébergeur), on fallback sur short_name.

Source
ovh_ssh_key_name
Source
port
Source
present_provider_blocks

Noms des blocs providers présents dans le merged. Utile pour les messages d'erreur quand provider: n'est pas déclaré.

Source
provider

Provider déclaré dans le merged (ex: "ovh", "scaleway"). Dans le vocabulaire ADR-014 c'est le compute_provider (où le serveur est hébergé), distinct du dns_provider du domaine.

Source
provider_field(provider_name : String, field : String) : String | Nil

Accès générique à un champ du bloc <provider>: (service_name, server_id, zone, etc.).

Source
scaleway_server_id
Source
scaleway_zone
Source
short_name
Source
ssh_host

Hostname effectif pour SSH.

Ordre de résolution :

  1. Si transport global = :overlay ET overlay_ip: présent → cette IP. Use case : tous les CLI beryl appelés avec --transport=overlay parlent au host via le mesh Headscale, avec un port 22 fermé en public (cf. recipe sshd-overlay-only).
  2. ssh_host: explicite dans le YAML mergé. Prime sur tout le reste sauf l'overlay. Cas d'usage : test local (ssh_host: 127.0.0.1), VPN avec FQDN interne distinct du DNS public, alias DNS provider qu'on veut figer.
  3. Si provider OVH avec ovh.service_name : on privilégie le FQDN OVH (toujours résoluble en DNS public).
  4. Sinon le FQDN logique (<short_name>.<domaine>).

Avant le fix du 28 avril 2026 (commit 3b19dfb), ssh_host: du YAML était silencieusement ignoré sauf pour OVH — incohérent et bloquant pour tester en local.

Source
ssh_host_explicit?

Vrai si l'opérateur a déclaré explicitement ssh_host: dans un YAML du merge. Distingue le cas « override YAML » du cas « nom de host hébergeur dérivé ». Utilisé par Beryl.format_ssh_target pour produire un libellé sémantiquement juste : « fqdn (via 127.0.0.1) » plutôt que « fqdn (= 127.0.0.1 côté local) » qui prêterait à confusion (« local » n'est pas un provider hébergeur).

Source
ssh_host_is_provider_name?

Vrai si ssh_host provient d'un provider hébergeur (typiquement OVH avec ovh.service_name) et diffère du FQDN logique. Distingue ce cas du cas « override YAML » couvert par ssh_host_explicit?. Si l'opérateur a posé un ssh_host: YAML, ce flag est faux même si la valeur diffère du FQDN — la responsabilité est à l'opérateur, pas au provider.

Source
user
Source
validate_zfs!
Source
virtual
Source
zpools

Liste tous les pools ZFS déclarés (ancienne et nouvelle syntaxe).

Source

Nested types