class

Beryl::Providers::Gandi

Inherits Beryl::DnsProvider < Beryl::Provider < Reference < Object

Provider Gandi pour beryl — capability :dns uniquement (gestion de zone via l'API Gandi LiveDNS v5, shard api-gandi).

Gandi n'héberge pas de serveurs : pas de capability :compute. Le reverse DNS (PTR) n'est PAS géré par Gandi LiveDNS (il relève de l'hébergeur qui possède le bloc d'IP, ex: OVH) → set_reverse lève.

Le client est injectable via le constructeur pour les tests ; en production il est résolu à la demande depuis GANDI_PAT.

Constructors

new(injected_client : GandiApi::Client | Nil = nil)
Source

Instance methods

available?

Vrai si les credentials nécessaires sont disponibles (variables d'env, fichiers de config, agent local…). Ne lève jamais : un provider « indisponible » est simplement sauté par beryl init.

Source
capabilities

Capabilities que ce provider expose (ADR-014). Valeurs connues :

:dns — gestion d'une zone DNS (records, reverse, refresh) :compute — hébergement de serveurs (rescue, boot_from_disk…) :object_storage — stockage objet compatible S3 (futur) :cdn — CDN (futur) :cert — certificats SSL (futur)

Un provider peut en avoir plusieurs (OVH = [:dns, :compute]). Beryl vérifie la capability avant d'appeler une méthode correspondante — si un dns_provider: hetzner est déclaré alors qu'Hetzner n'a pas :dns, une erreur explicite est levée à la résolution.

Par défaut vide : chaque sous-classe doit la définir.

Source
credentials_env_vars

Variables d'environnement nécessaires pour que available? soit vrai et que les appels API marchent. Listées dans l'ordre où beryl init les demandera si le provider n'est pas configuré. Utilisé pour la configuration interactive + aide.

Source
credentials_help_details

Détails d'aide supplémentaires à afficher pendant beryl init. Typiquement la liste exhaustive des permissions/routes que beryl va appeler, pour que l'opérateur puisse les cocher dans le formulaire du panel. Retourne nil si pas de détails particuliers.

Source
credentials_help_url

URL d'aide côté panel hébergeur où l'utilisateur génère les credentials (token d'API, secret key, etc.). Affichée avant le prompt interactif pour que l'opérateur ouvre sa page dans un autre onglet.

Source
display_name

Nom humain pour affichage (ex: "OVHcloud", "Scaleway Elastic Metal").

Source
ensure_record(zone : String, field_type : String, sub_domain : String, target : String) : Nil

Enregistre (ou met à jour) un record DNS. Idempotent : si le record existe déjà avec la même valeur, no-op.

zone → nom de la zone (ex: "example.net") field_type → type DNS ("A", "AAAA", "CNAME", "TXT"…) sub_domain → sous-partie ("loulou" ou "" pour le root) target → valeur du record (IP, FQDN, …)

Source
list_ssh_keys

Gandi est DNS-only : aucune clé SSH côté panel.

Source
name

Identifiant court et stable du provider (ex: "ovh", "scaleway"). Utilisé comme clé dans le registre, comme valeur de provider: dans le YAML d'un host, et comme nom dans les logs.

Source
refresh_zone(zone : String) : Nil

Gandi LiveDNS propage automatiquement : pas de refresh explicite.

Source
set_reverse(ip : String, reverse : String, block : String | Nil = nil) : Nil

Pose (ou met à jour) le reverse DNS d'une IP. reverse est un FQDN (avec ou sans point final). block : bloc IP déclaré par l'hébergeur qui contient ip (utile en IPv6 où le reverse se pose au niveau du bloc) ; nil → déduit par le provider.

Source
ssh_key_yaml_fragment(key_id : String) : Hash(String, String | Array(String))

Non applicable (pas de compute). Bloc vide.

Source