Ansible und der Elastic Stack

6 August, 2026

Dirk Wening
Dirk Wening
Technical Writer

von | Aug. 6, 2026

Zuletzt aktualisiert: 06.08.2026 · Lesezeit 4-6 Minuten

In diesem Artikel möchte ich dir die Ansible Collection netways.elasticstack vorstellen, mit der sich Ansible und der Elastic Stack (Elasticsearch, Logstash, Kibana, Beats) automatisiert ausrollen und verwalten lässt. Anhand eines ausgearbeiteten Beispiels zeige ich dir Schritt für Schritt, wie du damit einen Elasticsearch-Knoten aufsetzt.

Die wichtigsten Punkte in 30 Sekunden

  • netways.elasticstack deckt Elasticsearch, Logstash, Kibana und Beats komplett ab und sammelt automatisch Facts aller beteiligten Hosts, damit sich die Komponenten untereinander verbinden können.
  • Voraussetzung auf dem Control Node: Ansible-Core ≥ 2.18Python ≥ 3.11, das Python-Modul elasticsearch in einer Version unterhalb von 9 sowie passlib für das Passwort-Hashing.
  • Installation läuft über zwei Plays: die Repos-Rolle für die Paketquelle, danach die elasticsearch-Rolle für den eigentlichen Knoten.
  • Über elasticstack_variant und elasticstack_release steuerst du OSS- vs. Enterprise-Variante und die Major-Version (7 oder 8).

Was ist netways.elasticstack?

Die Ansible Collection netways.elasticstack wird von NETWAYS gepflegt und deckt den gesamten Elastic Stack ab. Sie bringt eigene Rollen für Elasticsearch, Kibana, Logstash und Beats mit, ergänzt durch eine Rolle für die Verwaltung der benötigten Paketquellen. Zusätzlich beinhaltet sie eigene Module zur Verwaltung von Rollen und Benutzern innerhalb von Elasticsearch.

Ein zentrales Merkmal ist, dass die Rollen aufeinander abgestimmt sind und zusammenarbeiten. Bereits beim Anlegen der Elasticsearch-Knoten werden Facts aller beteiligten Hosts eingesammelt. Damit sich die einzelnen Komponenten des Stacks über Hostnamen oder IP-Adressen automatisch miteinander verbinden können.

Wichtig dabei: Das funktioniert nur für Hosts, die tatsächlich Teil desselben Playbook-Laufs sind. Laut Dokumentation musst du sicherstellen, dass alle Hosts, die konfiguriert werden sollen, auch im Playbook enthalten sind. Ein Host, der in keinem der Plays angesprochen wird, bringt also auch keine Daten (Hostname/IP) für die automatische Verknüpfung ein, selbst wenn er im Inventory existiert. Außerdem solltest du entweder eine zuverlässige DNS-Auflösung für alle beteiligten Hosts sicherstellen oder sie manuell in die Hosts-Datei der Systeme eintragen, damit sich die Komponenten über ihre Hostnamen erreichen können. Die Collection unterscheidet zudem zwischen der freien (OSS) und der Enterprise-Variante von Elastic über die Variable elasticstack_variant, und erlaubt es, über elasticstack_release bzw. elasticstack_version gezielt eine Elastic-Stack-Major-Version (aktuell 7 oder 8) beziehungsweise eine konkrete Version zu installieren.

Laut offizieller Dokumentation wurde die Collection auf folgenden Linux-Distributionen jeweils mit Elastic Stack 7 und 8 getestet. Hierzu gehören Rocky Linux 9, Debian 13 und Ubuntu 22.04 LTS. Ich selbst habe die Collection auf einem Ubuntu 22.04 LTS getestet.

Notwendige Abhängigkeiten für Ansible und den Elastic Stack

Bevor du mit der Installation und Erstellung eines Playbooks beginnst, möchte ich nun auch noch auf zusätzliche Abhängigkeiten hinweißen.

passlib wird benötigt, da das Hashing der Logstash-Benutzerpasswörter nicht deativieren werden soll.

Zusätzlich wird auf dem Control Node das Python-Modul elasticsearch benötigt. Hierbei ist laut Dokumentation Vorsicht geboten. Aktuelle Versionen des Moduls sind entweder mit Elasticsearch 9 oder mit Versionen unterhalb von 9 kompatibel. Eine Version, die beides gleichzeitig unterstützt, gibt es demnach nicht. Die Collection installiert daher vorerst eine Version unterhalb von 9, sobald die Collection selbst kompatibel zu Elastic Stack 9 gemacht wird, muss hier die passende Modul Version berücksichtigt werden.

Optional kommt außerdem die Community-Rolle geerlingguy.redis hinzu, wenn Redis als Teil der Logstash-Pipeline zum Einsatz kommen soll.

Auf deinen Ansible-Control-Node sollte laut Dokumentation folgendes Installiert sein:

  • Die Collection community.general, diese ist aber wahrscheinlich schon vorhanden
  • Ansible-Core in Version 2.18.0 oder höher
  • Python in Version 3.11.0 oder höher

Prüfen kannst du die Versionen mit:

ansible --version 
python --version 

Installation der Collection

Installieren lässt sich die Collection direkt aus dem Git-Repository.

ansible-galaxy collection install git+https://github.com/netways/ansible-collection-elasticstack.git

Elasticsearch auf einem Host installieren

Ich möchte dir hier ein Beispiel zeigen, wie du mit netways.elasticstack einen einzelnen Elasticsearch-Knoten auf einem Host installierst. Als Zielsystem verwende ich in diesem Beispiel ein Ubuntu 22.04 LTS.

Schritt 1: Inventory anlegen

Zuerst legst du deinen Inventory an und trägst deinen Zielhost ein. In meinem Artikel Ansible Grundlagen erkläre ich genau wie Ansible funktioniert.

vim inventory.ini
[elasticsearch]
elastic01 ansible_host=Ziel.host.IP  ansible_user=deinbenutzer

Später in unserem Playbook sprechen wir explizit die Gruppe wieder an.

Schritt 2: Passwortlosen SSH Zugang einrichten

Damit Ansible sich ohne Passwortabfrage mit elastic01 verbinden kann, richtest du einen SSH-Key ein.

ssh-keygen -t ed25519 -C "ansible"
ssh-copy-id deinbenutzer@Ziel.IP

Schritt 3: Das Playbook

vim elasticstack.yml

- hosts: elasticsearch
  become: true
  collections:
    - netways.elasticstack
  vars:
    elasticstack_variant: elastic
    elasticstack_release: 8 
  roles:
    - repos

- hosts: elasticsearch
  become: true
  collections:
    - netways.elasticstack
  vars:
    elasticstack_variant: elastic
    elasticstack_release: 8 
    elasticsearch_jna_workaround: true
  roles:
    - elasticsearch

Was macht das Playbook?

Es besteht aus zwei Plays, die nacheinander auf der Gruppe elasticsearch ausgeführt werden. Das erste Play richtet über die Rolle repos die passende Elastic Paketquelle ein.

Über elasticstack_variante legst du fest, ob die freie (oss) oder die volle Elastic Variante (elastic) installiert wird. In diesem Beispiel verwendest du die volle Variante. Über elasticstack_release legst du zusätzlich fest, dass Elastic Stack 8 statt des Standards 7 installiert wird. Wir haben uns bewusst für Version 8 entschieden, da hier die Security-Features (unter anderem TLS ) standardmäßig mit dabei sind und nicht mehr separat aktiviert werden müssen.
Das zweite Play installiert über die Rolle elasticsearch den eigentlichen Elasticsearch-Knoten.

Die repos-Rolle ist dabei kein Zwang: Laut Dokumentation der Rollen benötigst du lediglich irgendeine Form von konfiguriertem Elastic Repository auf dem System. Ob dafür die mitgelieferte repos Rolle genutzt wird oder eine andere Methode, ist der elasticsearch Rolle egal. Ohne ein konfiguriertes Repository schlägt die Installation aber fehl, da Elasticsearch als Paket über apt installiert wird.

Schritt 4: Playbook ausführen

ansible-playbook -i inventory.ini elasticstack.yml --ask-become-pass

Ansible fragt dich dabei nach dem Sudo-Passwort (–ask-become-pass), da die Installation Root-Rechte benötigt.

Schritt 5: Installation prüfen

Nach erfolgreichem Durchlauf kannst du dich auf elastic01 anmelden und den Status von Elasticsearch prüfen.

systemctl status elasticsearch
curl -k https://localhost:9200

Weiterführende Schritte

Wenn du über den einzelnen Elasticsearch-Knoten hinaus den kompletten Elastic Stack aufbauen möchtest, kannst du dein Playbook genau nach diesem Muster erweitern: Für Logstash, Kibana und Beats stehen dir eigene Rollen der Collection zur Verfügung, die du als weitere Plays ergänzt.

Achte dabei auf die von der Dokumentation vorgegebene Reihenfolge der Rollen, da einzelne Komponenten aufeinander aufbauen (z. B. bei der Zertifikatserstellung). Eine ausführliche Übersicht zu allen Rollen und deren Variablen findest du im „Getting Started“-Guide im Repository der Collection.

Fazit zu Ansible und dem Elastic Stack

netways.elasticstack ist eine aktiv gepflegte Collection, die den gesamten Elastic Stack abdeckt: von der Ersteinrichtung über Elasticsearch, Logstash und Kibana bis zur Log-Sammlung mit Beats, inklusive Repository-Verwaltung und einem auf Zusammenspiel der Rollen ausgelegten Aufbau. Das gezeigte Beispiel installiert einen einzelnen Elasticsearch-Knoten. Für Logstash, Kibana und Beats lässt sich das Playbook nach demselben Muster erweitern.

Wie hat Dir unser Artikel gefallen?