Homestead: Elasticsearch aufsetzen

Wenn du vor der Frage stehst: Wie Elasticsearch in Homestead aufsetzen, ist dieser Beitrag für dich gemacht.

TL;DR

  • Passe deine Homestead.yaml an: Snippet.
  • Provisioniere die Box.

Basis

An manchen Stellen, hilft es eine gleiche Basis zu haben.

Die Homestead.yaml

In folgenden Beispielen gehen wir einfach von folgender Homestead.yaml aus.

Diese Datei liegt innerhalb des Homestead-Ordners.

box: laravel/homestead
ip: "192.168.10.10"
memory: 4096
cpus: 4
provider: virtualbox

Vermutlich nutzt du eine andere Konfiguration. Das ist kein Problem.

Was ist mit Homestead-Ordner gemeint?

Der Ordner in dem dein Homestead installiert ist.

Homestead.yaml anpassen

Seit Elasticsearch das erste Mal in Homestead ein unterstütztes Feature wurde, ist der Weg um das Feature zu nutzen drei größeren Veränderungen durchlaufen.

Jeweils passen wir unsere Homestead.yaml an und provisionieren die Box neu (vagrant provision oder vagrant up --provision).

Homestead v5.5 bis v5.7

[...]
elasticsearch: 6

ports:
    - send: 9200
      to: 9200

Ab Homestead v5.8 bis v6

Eine Neuheit in v5.8: Liste an Features.

Auf einen Schlag wurden blackfire, grafana, minio ähnlich einfach nutzbar.

[...]

features:
    - elasticsearch:
        version: 7

ports:
    - send: 9200
      to: 9200

Seit Homestead v7

In Homestead v7 haben sich zwei Dinge geändert:

  • Wir müssen Elasticsearch Versionen vollständig angeben. Vollständig heißt: {major}.{minor}.{patch}.
  • Wir können Services beim Start erzwingen oder deaktivieren.
[...]

features:
    - elasticsearch:
        version: 7.10.1

services:
    - enabled:
        - "elasticsearch"

ports:
    - send: 9200
      to: 9200

Box provisionieren

Ist die Homestead.yaml angepasst, müssen wir noch provisionieren.

  • Öffne ein Terminal deiner Wahl.
  • Springe in deinen Homestead-Ordner.
  • Falls die Box gestartet ist, führe vagrant provision aus.
  • Andernfalls vagrant up --provision.

Wie du prüfst ob Elasticsearch läuft

Nun haben wir Dinge gemacht um Elasticsearch bereitzustellen. Aber irgendwie wissen wir nicht ob Elasticsearch funktioniert.

Um das herauszufinden haben wir einige Möglichkeiten. Hier sind zwei.

In jedem Fall verbinden wir uns mit unserer Box:

  • Terminal öffnen.
  • In den Homestead-Ordner springen.
  • Via SSH verbinden (z.B.: vagrant ssh).

Prüfen ob Service Elasticsearch läuft

systemctl is-active elasticsearch

Wir erwarten etwas ähnliches wie:

vagrant@homestead:~$ systemctl is-active elasticsearch
active

Sollte der service nicht aktiv sein, so können wir das ändern mit:

sudo /etc/init.d/elasticsearch restart

Elasticsearch API prüfen

Alternativ können wir HTTP Anfragen senden und schauen was zurück kommt. Daraus lernen wie ob Elasticsearch ansprechbar ist oder eben nicht.

Dafür einfach innerhalb der SSH-Verbindung:

curl localhost:9200

Daraufhin erwarten wir etwas ähnliches wie:

{
  "name" : "homestead",
  "cluster_name" : "homestead",
  "cluster_uuid" : "nlZjeu1YQwG7btyF0uEU-A",
  "version" : {
    "number" : "7.10.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa",
    "build_date" : "2020-12-05T01:00:33.671820Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Während Provisionierung Elasticsearch is already installed, aber Service ist nicht verfügbar

Unter unglücklichen Umständen geht Homestead während der Installation davon aus, das ein Feature bereits installiert ist.

Unglückliche Umstände kann eine fehlerhafte Provisionierung durch:

  • ungültiger Elasticsearch Version,
  • keiner Internetverbindung,
  • oder Elasticsearch down bzw. nicht erreichbar.

Solltest du in das Problem rennen, das alles sauber konfiguriert, aber Elasticsearch einfach nicht verfügbar ist, könnte es helfen die Datei ~/.homestead-features/elasticsearch in der Box zu löschen.

sudo rm ~/.homestead-features/elasticsearch

Und eine neue Provisionierung anzustoßen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert