Salt-Mine

Informationsaustausch zwischen den Minions

In die Mine speichern

Die Salt-Mine erlaubt es Minions, auf Daten andere Minions zuzugreifen.

Dabei bestimmt jeder Minion, welche Daten er in der Mine ablegt und damit "freigibt". Eine Standard-Konfiguration für die Mine existiert nicht. Legen Sie mit folgendem Inhalt an:

/etc/salt/minion.d/mine.conf
mine_interval: 2
mine_functions:
    network.ip_addrs: []

Nach dem Restart des Minions hinterlegt dieser nun all 2 Minuten seine IP-Adressen in der Mine.

The Salt Mine functions are executed when the Minion starts and at a given interval by the scheduler. The default interval is every 60 minutes 📖 Salt Doku

Sie können mit salt '*' mine.update ein Update erzwingen.

Testen Sie, was in der Mine abgelegt wurde:

salt <MINION> config.get mine_functions
salt <MINION> mine.get '*' <FUNCTION>

Als Mine-Funktion können alle Salt-Module verwendet werden. Beispiel für eine mine.conf:

mine_functions:
  network.ip_addrs: []
  test.ping: []
  file.read: [/etc/hosts]
  cmd.run: [/bin/date]

Mine zentral vom Master auf den Minion aktivieren

Aus der Mine lesen

Nachdem Restart des Minions kann man testen, was in der Mine liegt:

Daten aus der Mine können nun wie folgt in States verwendet werden:

In die Mine hereinschauen

Beispiel 1: Namensauflösung ohne DNS

Im nachfolgenden Beispiel werden sich all Minions gegenseitig in die lokale /etc/hosts Datei eintragen. Die Minions können sich dann per Namen erreichen, ohne dass diese in einen DNS Server eingetragen werden müssen.

Beispiel 2: Webserver-Cluster und Loadbalancer

Ein klassischer Anwendungsfall ist die Konfiguration von Loadbalancern. Diese müssen wissen, über welche Server die Last verteilt werden soll.

Über die Salt Mine können sich Server registrieren und der Minion des Loadbalancers hat Zugriff auf eine Serverliste, welche aus der Salt Mine generiert wird.

Schritt 1: Salt Mine auf den Minions aktivieren

Die Salt Mine kann auf den Minions zentral vom Salt Master mit dem nachfolgenden State aktiviert werden:

Schritt 2: Loadbalancer mit Mine-Daten konfigurieren

Und der Loadbalancer kann wie folgt auf die Liste zugreifen:

Das Beispiel setzt voraus, dass die Backend-Minions ein Grain roles:web gesetzt haben.

🧩 Aufgabe: Starten Sie einen neuen LXD Container und rollen Sie alle nötigen States aus, damit das neue System als Backend dem Cluster beitritt.

Optimierung der Loadbalancer Konfiguration

Last updated