0x0i.elasticsearch

ansible logo

elasticsearch logo

Ansible-Rolle :mag_right: :high_brightness: Elasticsearch

Galaxy Rolle GitHub-Veröffentlichung (neueste nach Datum) Lizenz: MIT

Inhaltsverzeichnis

Ansible-Rolle, die Elasticsearch installiert und konfiguriert, eine Echtzeit-Distributed-Such- und Analyse-Engine.

Unterstützte Plattformen:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu

Anforderungen

Benötigt das Dienstprogramm unzip/gtar, das auf dem Ziel-Host installiert sein muss. Weitere Informationen finden Sie in den Hinweisen zum Ansible unarchive-Modul.

Rollenvariablen

Variablen sind verfügbar und nach den folgenden Phasen der Software- und Maschinenbereitstellung organisiert:

  • installation
  • konfiguration
  • start
  • deinstallation

Installation

elasticsearch kann mit den Paketverwaltungssystemen des Betriebssystems (z. B. apt, yum) oder mit komprimierten Archiven (.tar, .zip), die aus verschiedenen Quellen heruntergeladen und extrahiert werden, installiert werden.

Folgende Variablen können angepasst werden, um verschiedene Aspekte dieses Installationsprozesses zu steuern, von der Softwareversion und dem Speicherort der Binärdateien bis zum Installationsverzeichnis, in dem sie gespeichert werden:

elasticsearch_user: <service-user-name> (standard: elasticsearch)

  • Dedizierter Dienstbenutzer und Gruppe, die von elasticsearch zur Trennung von Privilegien verwendet wird (siehe hier für Details)

install_type: <package | archive> (standard: archive)

  • package: Unterstützt von Debian- und Redhat-Distributionen, die Paketinstallation von Elasticsearch zieht das angegebene Paket aus dem jeweiligen Paketverwaltungsrepository.
    • Beachten Sie, dass das Installationsverzeichnis vom Paketverwaltungssystem bestimmt wird und derzeit standardmäßig auf /usr/share für beide Distributionen gesetzt ist. Versuche, eine Paketinstallation auf anderen Linux-Distributionen festzulegen und auszuführen, führen aufgrund mangelnder Unterstützung zu Fehlern.
  • archive: Kompatibel mit tar und zip-Formaten, können die archivierten Installationsbinärdateien aus lokalen und entfernten komprimierten Archiven entweder von der offiziellen Download/Release -Seite oder von denen, die aus Entwicklungs-/benutzerdefinierten Quellen generiert wurden, bezogen werden.

install_dir: </path/to/installation/dir> (standard: /opt/elasticsearch)

  • Pfad auf dem Ziel-Host, wo die elasticsearch-Binärdateien extrahiert werden sollen.

archive_url: <path-or-url-to-archive> (standard: siehe defaults/main.yml)

  • Adresse eines komprimierten tar oder zip-Archivs, das elasticsearch-Binärdateien enthält. Diese Methode unterstützt technisch die Installation jeder verfügbaren Version von elasticsearch. Links zu offiziellen Versionen finden Sie hier.

archive_checksum: <path-or-url-to-checksum> (standard: siehe defaults/main.yml)

  • Adresse einer Prüfzifferdatei zur Überprüfung der Datenintegrität des angegebenen Archivs. Obwohl dies empfohlen wird und allgemein als bewährte Praxis gilt, ist es nicht erforderlich, eine Prüfziffer anzugeben, und kann deaktiviert werden, indem ein leerer String ('') für den Wert angegeben wird.

package_url: <path-or-url-to-package> (standard: siehe defaults/main.yml)

  • Adresse eines Debian- oder RPM-Pakets, das elasticsearch-Quellcode und -Binärdateien enthält. Beachten Sie, dass das Installationslayout von den Paketverwaltungssystemen bestimmt wird. Konsultieren Sie die offizielle Dokumentation von Elastic für Details zur RPM- und Debian-Installation.

package_checksum: <path-or-url-to-checksum> (standard: siehe vars/...)

  • Adresse einer Prüfzifferdatei zur Überprüfung der Datenintegrität des angegebenen Pakets. Obwohl dies empfohlen wird und allgemein als bewährte Praxis gilt, ist es nicht erforderlich, eine Prüfziffer anzugeben, und kann deaktiviert werden, indem ein leerer String ('') für den Wert angegeben wird.

checksum_format: <string> (standard: siehe sha512)

  • Hash-Algorithmus, der zur Dateiverifizierung verbunden ist mit der angegebenen Archiv- oder Paketprüfziffer. Informationen zu Prüfziffern/kryptografischen Hashes finden Sie hier.

Konfiguration

Die Konfiguration von elasticsearch wird in 3 Dateien ausgedrückt:

  • elasticsearch.yml zur Konfiguration von Elasticsearch
  • jvm.options zur Konfiguration der JVM-Einstellungen von Elasticsearch
  • log4j2.properties zur Konfiguration des Elasticsearch-Loggings

Diese Dateien befinden sich im Konfigurationsverzeichnis, das, wie zuvor erwähnt, davon abhängt, ob die Installation von einer Archivdistribution (tar.gz oder zip) oder von einer Paketdistribution (Debian- oder RPM-Pakete) erfolgt.

Für weitere Details und um eine Vorstellung davon zu bekommen, wie jede Konfiguration aussehen sollte, siehe die offizielle Konfigurationsdokumentation von Elastic.

Folgende Variablen können angepasst werden, um den Standort und den Inhalt dieser Konfigurationsdateien zu verwalten:

config_dir: </path/to/configuration/dir> (standard: /opt/elasticsearch/config)

  • Pfad auf dem Ziel-Host, wo die oben genannten Konfigurationsdateien gespeichert werden sollen.

managed_configs: <list of configs to manage> (standard: siehe defaults/main.yml)

  • Liste von Konfigurationsdateien, die mit dieser Ansible-Rolle verwaltet werden sollen.

    Erlaubte Werte sind jede Kombination aus:

    • elasticsearch_config
    • jvm_options
    • log4j_properties

config: <hash-of-elasticsearch-settings> standard: {}

  • Die Konfigurationsdatei sollte Einstellungen enthalten, die nodespezifisch sind (wie node.name und paths), oder Einstellungen, die ein Node benötigt, um einem Cluster beizutreten.

Jede Konfigurationseinstellung/Wert-Paar, die von elasticsearch unterstützt wird, sollte innerhalb des Hashs ausgedrückt und korrekt im zugehörigen YAML-Config dargestellt werden. Werte können in typischer yaml/ansible-Form ausgedrückt werden (z.B. Strings, Zahlen und true/false-Werte sollten so geschrieben werden, wie sie sind, ohne Anführungszeichen).

Schlüssel des config-Hashes können entweder verschachtelt oder durch einen '.' getrennt sein:

config:
  node.name: beispiel-node
  path:
    logs: /var/log/elasticsearch

Eine Liste der konfigurierbaren Einstellungen finden Sie hier.

jvm_options: <list-of-dicts> standard: []

  • Die bevorzugte Methode zur Einstellung von JVM-Optionen (einschließlich Systemeigenschaften und JVM-Flags) erfolgt über die jvm.options-Konfigurationsdatei. Die Datei besteht aus einer zeilengetrennten Liste von Argumenten, die verwendet werden, um das Verhalten der JVM von Elasticsearch zu ändern.

Obwohl es selten notwendig ist, die Optionen der Java Virtual Machine (JVM) zu ändern, gibt es Situationen (z.B. unzureichende Heapgröße), in denen Anpassungen erforderlich sein können. Jede Zeile, die in der Datei gerendert werden soll, kann als Eintrag in einer Liste von Diktaten ausgedrückt werden, die in jvm_options enthalten ist, und besteht aus einem Hash, der ein optional comment-Feld und eine Liste von zu konfigurierenden Argumenten umfasst:

jvm_options:
  - comment: min und max JVM-Heapgröße festlegen (auf denselben Wert)
    arguments:
      - '-Xms1g'
      - '-Xmx1g'

Eine Liste der verfügbaren Argumente finden Sie hier.

log4j_properties: <list-of-dicts> standard: []

  • Elasticsearch verwendet das Apache log4j 2-Loggingsystem zur Organisation und Verwaltung der Protokollierungsfunktionen seiner Haupt- und Unterkomponenten. Daher können individuelle Einstellungen global oder pro Komponente angewendet werden, indem Konfigurationseinstellungen definiert werden, die mit verschiedenen Aspekten des Logging-Prozesses verbunden sind. Standardmäßig lädt log4j 2 eine log4j2.properties-Datei, die aus zeilengetrennten Eigenschaften besteht, die ein Schlüssel-Wert-Paar darstellen und eine gewünschte Konfiguration repräsentieren.

3 Eigenschaften ${sys:es.logs.base_path}, ${sys:es.logs.cluster_name}, und ${sys:es.logs.node_name} werden von Elasticsearch bereitgestellt und können in der Konfigurationsdatei referenziert werden, um den Speicherort dieser Protokolldatei und möglicherweise anderer zu bestimmen. Die Eigenschaft ${sys:es.logs.base_path} wird auf das Protokollverzeichnis aufgelöst, ${sys:es.logs.cluster_name} wird auf den Clusternamen (der als Präfix für Protokolldateinamen in der Standardkonfiguration verwendet wird) aufgelöst, und ${sys:es.logs.node_name} wird auf den Knotennamen aufgelöst (sofern der Knotenname explizit festgelegt ist).

Jede Zeile, die in der Datei gerendert werden soll, kann als Eintrag in einer Liste von Diktaten ausgedrückt werden, die in log4j_properties enthalten ist und aus einem Hash besteht, der ein optional comment-Feld und eine Liste von zugehörigen Schlüssel-Wert-Paaren umfasst:

log4j2_properties:
  - comment: Protokolliere Aktionsausführungsfehler für einfacheres Debugging
    settings:
      - logger.action.name: org.elasticsearch.action
        logger.action.level: debug

Siehe die offizielle Logging-Dokumentation von Elastic für weitere Details zu einer Liste verfügbarer Konfigurationen und Beispielen, wie diese Konfiguration aussehen sollte.

data_dir: </path/to/data/dir> (standard: /var/data/elasticsearch)

  • Pfad auf dem Ziel-Host, wo Daten vom Elasticsearch-Dienst (z.B. indizierte Datensätze) gespeichert werden sollen.

logs_dir: </path/to/log/dir> (standard: /var/log/elasticsearch)

  • Pfad auf dem Ziel-Host, wo Protokolle, die von dem Elasticsearch-Dienst generiert werden, gespeichert werden sollen.

Start

Das Ausführen des Elasticsearch-Such- und Analysedienstes zusammen mit seinem API-Server erfolgt mit dem systemd-Dienstverwaltungstool für sowohl Paket- als auch Archiv-Installationen. Gestart als Hintergrundprozesse oder Daemons gemäß der Konfiguration und vom zugrunde liegenden Verwaltungsrahmen bereitgestellten Ausführungsmöglichkeiten, kann der Start von elasticsearch so eingestellt werden, dass sie den Systemverwaltungsvorgaben entspricht, die für Ihre Umgebung und Organisation geeignet sind.

Folgende Variablen können angepasst werden, um die systemd-Dienstdefinition und das Ausführungsprofil/die -richtlinie des Dienstes zu verwalten:

extra_run_args: <elasticsearch-cli-options> (standard: [])

  • Liste von elasticsearch-Befehlszeilenargumenten, die zur Laufzeit an die Binärdatei übergeben werden, um den Start anzupassen. Diese Variable ermöglicht es, den Start entsprechend den Spezifikationen des Benutzers anzupassen.

custom_unit_properties: <hash-of-systemd-service-settings> (standard: [])

  • Hash von Einstellungen zur Anpassung der [Service]-Einheit-Konfiguration und der Ausführungsumgebung des Elasticsearch systemd-Dienstes.
custom_unit_properties:
  Environment: "ES_HOME={{ install_dir }}"
  LimitNOFILE: infinity

Siehe die systemd.service man-Seite für eine Übersicht über die Konfiguration.

Deinstallation

Die Unterstützung für die Deinstallation und Entfernung von Artefakten ermöglicht es Benutzern/Betriebsführern, einen Ziel-Host in den konfigurierten Zustand vor der Anwendung dieser Rolle zurückzuführen. Dies kann nützlich sein, um Knoten und Rollen wiederzuverwenden und möglicherweise sanftere/verwaltete Übergänge zwischen Tool-Upgrades zu ermöglichen.

Folgende Variable(n) können angepasst werden, um diesen Deinstallationsprozess zu verwalten:

perform_uninstall: <true | false> (standard: false)

  • Ob alle Artefakte und Überreste dieser elasticsearch-Installation auf einem Ziel-Host deinstalliert und entfernt werden sollen (siehe: handlers/main.yml für Details)

Abhängigkeiten

  • 0x0i.systemd

Beispiel-Playbook

Standardbeispiel:

- hosts: all
  roles:
  - role: 0x0I.elasticsearch

Installieren einer spezifischen Version des betriebssystemeigenen Pakets mit vordefinierten Standardeinstellungen:

- hosts: legacy-ES-cluster
  roles:
  - role: 0x0I.elasticsearch
    vars:
        managed_configs: []
        install_type: package
        package_url: https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.0.0/elasticsearch-2.0.0.rpm
        package_checksum: https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.0.0/elasticsearch-2.0.0.rpm.sha1
        checksum_format: sha1

Bereitstellung eines hybriden Master-/Datenknotens mit benutzerdefinierten Daten- und Protokollverzeichnissen:

- hosts: test-elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['elasticsearch_config']
        config:
          cluster.name: beispiel-cluster
          node.master: true
          node.data: true
          path:
            data: /mnt/data/elasticsearch
            logs: /mnt/logs/elasticsearch

JVM-Heap-Einstellungen anpassen und ausführliches Protokollieren für Cluster-Debugging/Fehlerbehebung aktivieren:

- hosts: elasticsearch
  roles:
    - role: 0x0I.elasticsearch
      vars:
        managed_configs: ['jvm_options', 'log4j2_properties']
        jvm_options:
          - comment: Passe die minimalen und maximalen JVM-Heapgrößen für erhöhte Ausgaben an
            arguments:
              - '-Xms16g'
              - '-Xmx16g'
        log4j2_properties:
          - comment: Protokolliere Aktionsausführungsfehler für einfacheres Debugging
            settings:
              - logger.action.name: org.elasticsearch.action
                logger.action.level: debug
        extra_run_args:
          - '--verbose'

Lizenz

MIT

Autoreninformationen

Diese Rolle wurde 2019 von O1.IO erstellt.

Über das Projekt

Elasticsearch, a real-time distributed search and analytics engine

Installieren
ansible-galaxy install 0x0i.elasticsearch
GitHub Repository
Lizenz
Unknown
Downloads
459
Besitzer