In einem der letztem Artikel habe ich bereits gezeigt, wie man Elasticsearch auf einem CentOS System installiert. Heute möchte ich einen Schritt weitergehen und zeigen wie man das ganze mit Ansible automatisieren kann.
Anlegen der Elasticsearch Role
Wir beginnen wieder damit, dass wir einen Ordner für die zu implementierene Role anlegen. In diesem Fall nenne ich den Ordner elasticsearch. In diesem Order lege ich wieder einen Ordner task an und dort die Datei main.yml. Weiterhin lege ich in dem elasticsearch Ordner einen Ordner mit dem Namen defaults an und erstelle auch in dem defaults Ordner eine Datei mit dem Namen main.yml. Das ganze sieht dann wie folgt aus:
1 2 3 4 5 | ├── elasticsearch │ ├── defaults │ │ └── main.yml │ └── tasks │ └── main.yml |
Jetzt öffnen wir die defaults/main.yml mit einem Editor. Hier lege ich nun eine Variable mit der Download URL des RPM Paketes für Elasticsearch an. Das ganze sieht bei mir dann wie folgt aus:
1 | elastic-rpm: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm |
Anschließend öffnet ich die Datei tasks/main.yml mit einem Editor. In dieser Datei lege ich nun mehrere Blöcke an. Als erste einen Block zum Herunterladen des RPM Paketes.
1 2 3 4 | - name: Elasticsearch | download rpm get_url: url: {{ elastic-rpm }} dest: /tmp |
Das heruntergeladene Paket wird im nächsten Block auf dem System installiert.
1 2 | - name: Elasticsearch | install elastic package: "name=/tmp/elastic.rpm state=installed" |
Als nächstes müssen wir die Konfiguration von Elasticsearch anpassen. Dafür können wir uns auch eine Konfigurationsdatei vordefinieren und diese auf das System kopieren. Ich verwende an dieser Stelle lieber das replace Modul von Ansible. So kann ich die Elemente die ich in der Konfiguration ersetzte später noch parametrisieren, falls ich eine Cluster Installation von Elasticserach implementieren will. Das ganze sieht dann wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 | - name: Elasticserach | set node.name replace: dest: /etc/elasticsearch/elasticsearch.yml regexp: '#node.name: node-1' replace: 'node.name: elastic-01' - name: Elasticserach | set cluster.name replace: dest: /etc/elasticsearch/elasticsearch.yml regexp: '#cluster.name: my-application' replace: 'cluster.name: elastic-cluster' |
Zu guter letzt wollen wir Elasticserach noch dem Autostart hinzufügen. Dafür verwenden wir in Ansible das systemctl Modul.
1 2 3 4 5 | - name: Elasticsearch | enable service systemd: name: elasticserach enabled: yes masked: no |
Damit ist unsere Ansible Role für das installieren von Elasticsearch soweit erstmal fertig. Als nächstes können wir die Installation testen.
Testen der Elasticsearch Installation mit Ansible
Zum Testen der Ansible Role müssen wir einen Eintrag in der hosts und in der site.yml Datei erstellen. Hier müssen wir auch Java mit installieren. Die Role dafür wurde bereits in einem vorherigen Artikel beschrieben.
1 2 3 | #hosts [elasticsearch] 192.168.10.108 |
1 2 3 4 5 6 7 | #site.yml - name: elasticsearch hosts: elasticsearch remote_suer: root roles: - java - elasticsearch |
Der Aufruf sieht dann wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ansible-playbook site.yml -i hosts PLAY [elasticsearch] ************************************************************************** TASK [Gathering Facts] ************************************************************************ ok: [192.168.10.108] TASK [elasticsearch : Elasticsearch | download rpm] ******************************************* changed: [192.168.10.108] TASK [elasticsearch : Elasticsearch | install elastic] **************************************** changed: [192.168.10.108] TASK [elasticsearch : Elasticserach | set node.name] ****************************************** changed: [192.168.10.108] TASK [elasticsearch : Elasticserach | set cluster.name] *************************************** changed: [192.168.10.108] TASK [elasticsearch : Elasticsearch | enable service] ***************************************** changed: [192.168.10.108] PLAY RECAP ************************************************************************************ 192.168.10.108 : ok=6 changed=5 unreachable=0 failed=0 |
Wenn hierbei keine Fehler auftauchen, wurde Elasticsearch erfolgreich auf dem Zielsystem installiert.
Die kompletten Ansible Rollen können von GitHub heruntergeladen werden.
Schreibe einen Kommentar