Ansible Modul für Clusterbetriebene Umgebung

Hallo zusammen,

ich war ganz begeistert als ich festgestellt habe, dass es ein Ansible Modul gibt.

Leider bin ich bei der Implementierung auf ein ganz Elementares Problem gestoßen.

Da ich meine Checkmk Umgebung als Cluster betreibe und die Abfragen aber nicht über die Cluster IP möglich sind, müssen auf meinen zu überwachenden Hosts jeweils 3 IPs in der Firewall freigeschalten werden.

Das Ansible Modul bietet jedoch nur die Möglichkeit, eine IP per Firewall freizuschalten.
Gibt es Lösungen dafür oder übersehe ich etwas?

Ansonsten werde ich wohl wie bisher auf eigene Ansible Skripte setzten müssen.

Gruß
Johannes

1 Like

Du meinst gewiss die Collection und darin unsere agent Rolle, richtig?

Dein Anwendungsfall liegt jenseits von Checkmk, also das gewünschte Feature passt nicht in die Collection. Ich würde einfach einen zusätzlichen Task bauen, der die IPs freischaltet. Ggf. als pre_task.

Also etwas in der Richtung von (ungetestet):

---
- name: "Checkmk Server Management."
  hosts: all
  pre_tasks:
    - name: "Manage Firewall."
      community.general.ufw:
        rule: allow
        proto: tcp
        src: "{{ item }}"
        port: 6556
        comment: Allow Checkmk
      loop:
        - 127.0.0.1
        - 192.168.1.1
        - 10.10.10.10
      become: true
  roles:
    - checkmk.general.server
    - checkmk.general.agent

IMHO ist das schon ein Anwendungsfall im Scope der Checkmk-Ansible-Collection. Denn der Fall ist ja mit zwei Appliances im Cluster “ganz normal”.

1 Like

Sehe ich wie Robert, genau so funktioniert es in einer geclusterten checkmk Appliance.

Alternativ dürft ihr da gerne auch noch mal über ein iptables rewrite für den Ausgehenden traffic auf die Cluster IP nachdenken :slight_smile:
Dann sind Migration von single Systemen einfacher (Firewalls, only_from etc.) und man spart sich das Eintragen der beiden Cluster Node IPs.

1 Like

Ich stimme zwar nicht umfangreich zu, dass das Teil der Collection sein sollte, aber da wir damals einen Pull Request zugelassen haben, der die Funktion grundsätzlich erlaubt (ich wusste, das beißt mich mal), kann ich nun schlecht mauern. :brick:

Ich bin zwar immer noch der Ansicht, dass man die Firewall seiner Server losgelöst von Checkmk managen sollte (es soll auf den Servern noch andere Anwendungen neben dem Checkmk Agenten geben), aber ich wäre einen Pull Request, der die Funktion nachrüstet nicht abgeneigt. :wink:

Passenderweise gibt es aktuell auch ein Issue, bei dem ein Nutzer festgestellt hat, dass die Firewallfreischaltung nur funktioniert, wenn man den Checkmk Server als IP angibt. FQDN funktioniert nicht.

Ich schreibe das auch in mein Backlog, aber kann nicht sagen, wann ich mir die Problematik ansehen kann. Bis dahin stehe ich zu meinem Lösungsansatz oben, bzw. freue mich auf Pull Requests. Ein Issue mit dem Featurewunsch geht natürlich auch. :slight_smile:

1 Like

Ich konnte es nicht lassen: Feature/agent adv fw mgmt by robin-checkmk · Pull Request #597 · Checkmk/ansible-collection-checkmk.general · GitHub

Habe nun eine Minimalversion der gewünschten Funktionalität eingebaut.
Ich bitte explizit euch mal zu schauen, ob das passt und gerne auch eine Review dazulassen.

Mir ist bewusst, dass man das noch recht weit aufblasen kann (DNS Auflösung, Verifizierungen, etc.) aber ich habe mich nach kurzer Evaluation dagegen entschieden. Warum? Weil die Collection für alle funktionieren soll und ich nicht für ein paar Annehmlichkeiten 90 % der Nutzenden mit Abhängigkeiten belästigen möchte, die diese gar nicht brauchen.

Alles, was sich aber ohne Abhängigkeiten machen lässt, darf natürlich gerne angemerkt werden. :v:

2 Likes

Hi Robin,

Ich verstehe, dass man anhand der Nachfrage priorisieren muss, welche der Ideen man umsetzt.
Ich danke dir deshalb noch einmal besonders für die Umsetzung!

Wir werden uns das Feature anschauen und dir dann Rückmeldung geben.

Gruß Johannes

1 Like