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
Instance methods
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.
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.
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.
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.
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.
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, …)
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.
Gandi LiveDNS propage automatiquement : pas de refresh explicite.
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.