class

Beryl::Apply::HeadscaleJoin

Inherits Beryl::Apply::Primitive < Reference < Object

Primitive headscale-join : joint un host au mesh Headscale via tailscale up --login-server=URL --authkey=KEY.

Idempotence : tailscale status exit 0 si déjà joint → skip ; exit non-zéro → on enrôle. La clé d'auth est lue depuis une variable d'environnement (jamais sur la ligne de commande beryl → pas de leak via ps). Le secret côté serveur cible est en argv pendant le temps de tailscale up (limitation du binaire upstream, < 1 s d'exposition).

- headscale-join:
    login_server: https://headscale.aloli.net
    authkey_env_var: HEADSCALE_AUTHKEY  # nom de la var (pas la valeur)
    ephemeral: false                     # défaut false ; true pour CI
    hostname: "{{ host_short }}"          # optionnel, override
    force_reauth: false                  # défaut false ; true pour re-enrôler

authkey_env_var est résolue côté beryl (pas côté serveur) au moment de l'apply. C'est l'opérateur qui fournit la variable dans son environnement (via le coffre secrets injecté par EnvFile#apply_to_env).

Instance methods

apply(shell : Shell, params : Hash(String, YAML::Any), dry_run : Bool, context : Context) : StepResult

params est le hash brut du step YAML (ex: {"packages" => [...]}), déjà interpolé par l'Executor. context porte les infos dérivées du host (cf. Context).

Source
name

Nom kebab-case utilisé comme clé de step dans les recettes (« pkg-install », « service-enable », …).

Source