OPNsense Forum

International Forums => German - Deutsch => Topic started by: Fenris14 on July 13, 2026, 06:46:08 PM

Title: OPNsense Ansible Oxlorg Purge
Post by: Fenris14 on July 13, 2026, 06:46:08 PM
Hallo,

ich versuche seit einigen Tagen mit Ansible und Git einige Playbooks umzusetzen. Einstellungen setzen und Standards definieren, ist soweit kein Problem.

Am meisten hänge ich bei dem Modulen rule und rule_multi. Es geht im Prinzip darum das Git als einzige Quelle der Wahrheit zu bauen. Vor allem die Funktion purge_all ist eigentlich interessant. Wenn ich es richtig verstanden habe, kann man damit alle Regeln im Zusammenspiel mit purge_filter von definierten Interfaces löschen und mit dem Stand abgleichen den man pushen möchte.

https://ansible-opnsense.oxl.app/modules/rule_multi.html

Bisher sieht es bei mir so hier aus:

---
  tasks:
       - name: Purge and Apply
      oxlorg.opnsense.rule_multi:
        multi_control:
          fail_verify: true
          purge_all: true         
          purge_filter:
            interface: "lan,opt1,opt2,opt3,opt4" 
        rules: >                 
          {{
            [
              (global_multi_interface_rules | default([])), (custom_multi_interface_rules | default([])),
              (global_server_rules | default([])), (custom_server_rules | default([])),
              (global_client_rules | default([])), (custom_client_rules | default([])),
              (global_voip_rules | default([])), (custom_voip_rules | default([])),
              (global_management_rules | default([])), (custom_management_rules | default([])),
            ] | flatten
          }}
      register: rule_sync

    - name: Trigger Firewall Filter Reload
      oxlorg.opnsense.reload:
        target: rule
      when: rule_sync.changed

Das Problem: Er schreibt die Regeln und macht auch einen Reload. Aber wenn eine manuell erstellte Regel oder eine Regel im Git nicht mehr existent ist, dann löscht er diese nicht.

Bisher konnte ich das nur erreichen wenn ich eine vorher vorhandene Regel im Git auf
state: absent setze. Das löst aber mein Problem mit manuell erstellten Regeln nicht. Und ja, ganz bewusst will ich alles purgen und dann die Regeln drüber ziehen. Deshalb ich den filter auf bestimmte Interfaces gesetzt und nicht auf alle.

Wie funktioniert die purge Funktion? Hat das mal jemand versucht?

Grüße