silvesterlangen.de

Seite
Menü

SaltStack

SaltStack ist ein Open Source Konfigurations- und Automatisierungssystem, was remote Befehle an Hosts verschicken kann. Mit SaltStack ist es möglich auf entfernten Systemen Installationen und Konfigurationen vorzunehmen und diese zu vereinheitlichen.

 

Wozu brauche ich das?

Aktuell ergibt sich, dass > 50 Hosts in verschiedenen Standorten gepflegt werden müssen. In den nächsten Jahren wird sich die Anzahl erhöhen. Dazu gehören neben Konfiguration auch Updates und wir können nicht für jedes Update oder Konfiguration die Standorte abfahren. Das Ziel ist, dass diese Aufgaben zukünftig per SaltStack auf einen Schlag erledigt werden können.

Natürlich macht sowas nur ab einer gewissen Anzahl Hosts Sinn. Hier zum Test habe ich mir einen Master und zwei Minions aufgesetzt. Als Testumgebungen habe ich Debian Stretch in einer Minimal-Installation.

 

Für welche OS ist das zu gebrauchen?

SaltStack deckt fast alle gängigen Plattformen ab. RedHat/CentOS, Debian, Ubuntu, SuSE, MacOS, Raspbian und einiges mehr.

 

Wie arbeitet das?

Ein Server dient als Master. Auf diesem Server werden die Befehle eingegeben, die zeitgleich an alle Minions (Slaves) gesendet und ausgeführt werden. Konfigurationen, die dort erstellt werden, werden an die betreffenden Minions weitergegeben und dort vorgenommen.

Ein Minion ist ein Server, der sich beim Master registriert und von dort seine Befehle erhält. Saltstack beherrsch die Push- sowie Pull-Methode. Entweder der Master sendet dem Minion das, was er tun soll oder der Minion meldet sich beim Master und holt dort sein "todo" ab.

Der Unterschied zwischen Saltstack und anderen Tools wie Puppet etc ist, dass es nicht nur Konfigurationen ausliefert und sicherstellt, sondern eine Parallel-Shell anbietet.

 

Vorbereitung:

Damit Master und Minions später keine Probleme haben sich gegenseitig zu finden und ihre Namen aufzulösen, ist entweder der Betrieb eines DNS erforderlich oder die Hostnamen mit IPs müssen in die /etc/hosts geschrieben werden. Dann natürlich auf allen Maschinen, also Master und Minions.

Wichtig!
Es muss ein DNS-Eintrag (alternativ ein Eintrag in /etc/hosts) namens "salt" existieren. Genauer gesagt: Die Minions suchen nach einem Host, der salt heißt und müssen im Zuge dessen den Master finden.

 

Die Installation

Die Installation kann man ganz klassisch über den Paketmanager selbst installieren oder den Installer von Saltstack nutzen. Dieser erkennt automatisch die Distribution (Debian, Ubuntu, SuSE, CentOS...), fügt selbsttätig das Repo und seine Keys hinzu und installiert. Ich habe es selbst ausprobiert und es gab absolut keine Probleme.

Der Master:

 Zuerst erstellen wir die /etc/apt/sources.list.d/saltstack.list und füllen sie mit folgendem Inhalt.

deb http://repo.saltstack.com/apt/debian/9/amd64/latest stretch main

Danach den Repo-Key holen und installieren.

wget -O - https://repo.saltstack.com/apt/debian/9/amd64/latest/SALTSTACK-GPG-KEY.pub | sudo apt-key add -

Mit einem apt-get update die Repo-Liste aktualisieren und danach die Pakete installieren.

apt-get install salt-master
apt-get install salt-ssh
apt-get install salt-syndic
apt-get install salt-cloud
apt-get install salt-api

Per Bootstrap-Multiplattform-Installer:

curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P -M

Nach der Installation die Ports 22, 4505 und 4506 TCP öffnen!

Die Minions:

Ebenfalls wie beim Master das Repo in die saltstack.list eintragen und updaten. Danach folgende Pakete installieren.

apt-get install salt-minion
apt-get install salt-ssh
apt-get install salt-syndic
apt-get install salt-cloud
apt-get install salt-api

 Per Bootstrap-Multiplattform-Installer:

curl -L https://bootstrap.saltstack.com -o install_salt.sh
sudo sh install_salt.sh -P

 

Nach der Installation die Ports 22, 4505 und 4506 TCP öffnen!

 

Danach den Dienst je nach Installation neu starten.

systemctl restart salt-minion
systemctl restart salt-master

 

Minions zum Master hinzufügen

Nach dem Start der Minions suchen sie sofort nach dem Hostnamen "master" und erreichen den Salt-Master, um ihm ihren Key anzubieten. Ein Key deshalb, weil die Kommunikation zwischen Master und Minions ist AES-verschlüsselt ist. In den folgenden zwei Zeilen, die auf dem Master ausgeführt werden, lassen wir uns anzeigen, wer sich beim Master so alles gemeldet hat. Die Zweite Zeile akzeptiert dann die Keys der beiden Minions.

salt-key -L
salt-key -A

 

Die  Anwendung - Kommandos senden

Zwei Wege Kommandos abzusetzen.

Per Shell-Befehl
Der Befehl wird remote auf den Minion übertragen und dort ausgeführt. Ein "apt upgrade" würde also ein Upgrade auf dem Minion auslösen, wenn er ein debianbasierter Minion ist. Ein Minion, der CentOS installiert hat würde diesen Befehl auch bekommen, aber er könnte ihn nicht ausführen, da er nur "yum update" kennt.

Per Salt-Kommando
Darum gibt es Salt-Befehle, die diesen Umstand der verschiedenen Distributionen berücksichtigen. So ergibt ein "salt '*' pkg.upgrade" ein Upgrade auf allen Minions unabhängig von der Distribution und des eigentlich dahinterstehenden Upgrade-Kommandos der Distribution.

 

Kommandos eingeben

Die Anwendung ist eigentlich recht einfach. Der Syntax ist wie folgt:

salt Zielsystem Kommando

Bei Wildcards kann es sein, dass sie in Hochkommata gesetzt werden müssen. Das hängt davon ab wie die Bash das in dieser Situation interpretiert. Ich verwende prinzipiell einfache Hochkommata, um einer möglichen Fehlermeldung zu entgehen.

Ein einfacher Ping-Test

Beispiel:

salt minion1.silvesterlangen.de ping.test oder

salt '*' ping.test

Im ersten Beispiel wird ein Ping-Test an einen einzelnen Minion gesendet.

Im zweiten Beispiel wird ein Pint-Test an alle Minions gesendet.

 

 

 

 

 

 

 

 

weiter zu:

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login