class

Beryl::Apply::WireguardInterface

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

Primitive wireguard-interface : configure une interface WireGuard (wg-quick, conf /usr/local/etc/wireguard/<iface>.conf), l'active au boot (sysrc wireguard_enable + wireguard_interfaces) et la monte. Idempotente : skip si la conf voulue est déjà en place ET l'interface montée.

La CLÉ PRIVÉE du serveur vient du COFFRE (jamais en clair dans le YAML) : private_key_env nomme la variable d'ENV (injectée par le coffre au moment de l'apply). Générez-la UNE fois : wg genkey (privée → coffre) / wg pubkey (publique → à donner aux pairs). Le NAT/forwarding/ouverture UDP sont posés À PART dans la recette (ip-forward, pf-rule).

- wireguard-interface:
    address: "10.100.0.1/24"        # IP du serveur dans le tunnel
    listen_port: 51820
    private_key_env: WG_PRIVKEY
    peers:
      - { name: iphone, public_key: "abc…=", allowed_ips: "10.100.0.2/32" }
      - { name: pixel,  public_key: "def…=", allowed_ips: "10.100.0.3/32" }

Constants

CONF_DIR = "/usr/local/etc/wireguard"

Class methods

build_conf(address : String, listen_port : String, private_key : String, peers : Array(Hash(String, String))) : String

Contenu de <iface>.conf (format wg-quick). Pur, exposé pour test. peers : liste de {name?, public_key, allowed_ips}.

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