class

Beryl::Apply::GithubSshKey

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

Primitive github-ssh-key : lit la clé PUBLIQUE d'un serveur et l'ajoute au compte GitHub associé au PAT fourni (POST /user/keys) — typiquement pour qu'un serveur puisse cloner/fetch un dépôt privé (déploiement Capistrano). Idempotente : ne re-poste pas une clé déjà présente. Le PAT vient du COFFRE (ENV), jamais de la recette.

- github-ssh-key:
    pubkey_path: /home/deploy/.ssh/id_ed25519.pub
    token_env: GITHUB_DEPLOY_TOKEN
    title: "deploy@web1.example.net"   # optionnel (défaut = commentaire de la clé)

L'appel HTTP part de BERYL (le PAT reste côté opérateur, jamais sur le serveur). PAT requis : scope write:public_key (classic) ou permission « Git SSH keys : write » (fine-grained).

Constants

API = "https://api.github.com/user/keys"

Class methods

already_present?(list_json : String, pubkey : String) : Bool

Vrai si le matériel de pubkey figure déjà dans la liste JSON renvoyée par GET /user/keys. Pur, exposé pour test.

Source
key_material(pubkey : String) : String

Partie « matériel » d'une ligne de clé publique (2ᵉ champ, le base64), pour comparer sans tenir compte du commentaire. Pur, exposé pour test.

Source
payload(title : String, pubkey : String) : String

Corps JSON du POST. Pur, exposé pour test.

Source

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