0x0i.elasticsearch
Ansible-Rolle :mag_right: :high_brightness: Elasticsearch
Inhaltsverzeichnis
- Unterstützte Plattformen
- Anforderungen
- Rollenvariablen
- Abhängigkeiten
- Beispiel-Playbook
- Lizenz
- Autoreninformationen
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.
- Beachten Sie, dass das Installationsverzeichnis vom Paketverwaltungssystem bestimmt wird und derzeit standardmäßig auf
- 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 vonelasticsearch
. 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 Elasticsearchjvm.options
zur Konfiguration der JVM-Einstellungen von Elasticsearchlog4j2.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.
Elasticsearch, a real-time distributed search and analytics engine
ansible-galaxy install 0x0i.elasticsearch