Beryl::Apply::PfRule
Inherits Beryl::Apply::Primitive < Reference < Object
Primitive pf-rule : ajoute/retire une règle dans un bloc géré par
beryl à l'intérieur de /etc/pf.conf. Le reste du fichier (macros,
tables, règles de l'opérateur) n'est jamais touché.
Idempotence : diff par ligne dans le bloc géré (marqueurs
# >>> beryl >>> / # <<< beryl <<<). La règle est validée
(pfctl -nf sur un fichier temporaire) AVANT d'écraser pf.conf,
puis chargée (pfctl -f).
- pf-rule:
rule: "block in quick proto tcp to port 23"
state: present # ou absent (défaut present)
nat: true place la règle dans un bloc de TRANSLATION distinct, inséré
AVANT les règles filtre (pf impose l'ordre options→scrub→translation→
filtre ; un nat en fin de fichier ferait échouer pfctl). Pour les
règles nat/rdr/binat (ex. NAT sortant d'un exit-node VPN) :
- pf-rule:
nat: true
rule: "nat on egress from 100.64.0.0/10 to any -> (egress)"
before: <règle> insère la règle JUSTE AVANT une règle déjà présente du
bloc (sinon : en fin de bloc). Indispensable pour un pass quick ajouté
après coup devant un block quick déjà posé : en fin de bloc, il ne
serait jamais atteint. if_set: "{{ var }}" saute l'étape si la valeur
est vide (règle facultative).
- pf-rule:
rule: "pass in quick inet proto tcp from { {{ allow_extra }} } to port 8888"
before: "block in quick proto tcp to port 8888"
if_set: "{{ allow_extra }}"
Constants
Mots-clés de début de section FILTRE : le bloc nat s'insère juste avant.
Instance methods
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).
Nom kebab-case utilisé comme clé de step dans les recettes (« pkg-install », « service-enable », …).