Salt Module

Steht die Verbindung?

Als erstes testen Sie, ob der Master alle Minions erreichen kann. Dazu geben Sie das Kommando salt '*' test.ping ein. Damit versucht der Sold Master alle verfügbaren Minions einmal anzupingen.

Was passiert hinter den Kulissen? Sie haben auf der einen Seite ein Salt-Master und auf der anderen Seite mehrere Minion. der Master öffnet den TCP Port 4506. Auf diesem Port lauscht Zero MQ Messing System. An diesem so genannten Messages Broker melden sich die Minion über eine AES verschlüsselte Verbindung an. Master und Minion kommunizieren über dieses Nachrichtenkanal. Die Minion müssen keine TCP Ports öffnen.

Was sind Salt-Module?

Salt-Module sind Befehle, welche der Master zu den Minions schickt. Die Minions führen diese Befehle aus.
Ein Basisbefehl ist cmd.run gefolgt von einem Befehl den das angesprochene Betriebssystem versteht. Beispielsweise

salt '*' cmd.run "lsb_release -a"

In diesem Beispiel wird cmd.run und das Kommando lsb_release ausgeführt.
Damit melden die Minion an den Master zurück, welches Betriebssystem gerade läuft.

Abstraktionsschicht

Die eingebauten Module von Salt können aber mehr als nur Befehle des Betriebssystems aufrufen.
Die Befehle des Betriebssystems werden von Salt eigene Kommandos gekapselt.

Beispiel Pakete installieren

Schauen Sie sich das Modul pkg.upgrade an:
Wenn Sie dieses zu einem Minion schicken, der mit CentOS oder RedHat läuft, führt der Minion yum update aus.
Ein Minion mit Debian oder Ubuntu hingegen, führt übersetzt pkg.upgrade in die Kommandos apt-get update && apt-get -y upgrade.

Die Saltmodule kapseln die unterschiedlichen Kommandos der unterschiedlichen Distributionen und Betriebssysteme in ein einheitliches Set von Befehlen.

Weitere Beispiele

salt '*' pkg.install nginx -l debug
salt '*' service.start nginx

Beispiel Benutzer anlegen

Sehen Sie sich ein weiteres Beispiel an. Sie möchten einen Benutzer anlegen.
Dazu geben auf der Kommandozeile des Saltmaster salt gefolgt von der Liste der Minions die Sie ansprechen wollen -diesem Fall sind es alle- an, gefolgt vom Modul. Das Modul heißt user.add und er erwartet als Option den Namen des Benutzers, den sie anlegen möchten. Beispielsweise

salt '*' user.add <DEIN_NAME>

Nun möchten wir, dass im Home Verzeichnis des soeben angelegten Benutzers auch ein SSH-KEY hinterlegt wird, damit sich der Besitzer mit dem passenden privaten Schlüssel an diesem System als unprivilegierter Benutzer anmelden kann. Salt hat auch dafür ein fertiges Modul im Repertoire.
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.ssh.html

salt '*' ssh.set_auth_key <DEIN_NAME> <KEY> enc='ssh-rsa' comment='[email protected]'
salt '*' ssh.set_auth_key thorsten "AAAAB3NzaC1yc2EAAAABIwAAAQEArc8djTRZ0z5b6VCJ7Mv4Yde5mOPI6ftFeFhsKhyAeilV0Wvb03FbZ7enUrhdxYBnZjose9M2btg9z6JN4TMvzxDu1hAEp1NqVOZFvMRhzRIMRyt5dTqEIu4bpplTUQ/XM41yM+Y4BQGqVMlAxOREHBUFlejgmaF2cHwH87Ws0Glz+okqCwa4iHvrfDDPY9lJXye3eyNUdRf8+s3U0kZd009gX40L1sI+2q3zmJDVaRNI+X+MPGxvg/Ldkideep1tZYSA1ikXfaf5V6MQ0vRsUaWRrIhQnt5wVr7HBUg4+6TtXue+19Ai5oHzZ/YPYhoxePl5W9d5ToAmOQ5Khp8cow==" enc='ssh-rsa' comment='[email protected]'

Und das letzte Beispiel zeigt, wie sie für den soeben angelegten User die Standard Shell ändern und sudo-Rechte vergeben.

salt '*' user.chshell <DEIN_NAME> /bin/bash
salt '*' file.write /etc/sudoers.d/<DEIN_NAME> "<DEIN_NAME> ALL=(ALL) NOPASSWD:ALL"

Salt verfügt momentan über 289 Module, mit denen sie die Systeme fernsteuern können.
Diese Module sind eine Abstraktionsschicht, so dass Sie einheitliche Kommandos verwenden können. Diese werden auf den gezeigten Betriebssystem in die passenden Kommando umgewandelt.

Hintereinander statt parallel

Mit der Option --batch=1 geben Sie an, dass ein Modul nicht auf allen Minions gleichzeitig ausgeführt werden soll. Stattdessen wird einer nach dem anderen das Modul ausführen.

Mit der Option --failhard wird die Verarbeitung auf den nachfolgenden Minions abgebrochen, sobald auf einem Minion ein Modul nicht erfolgreich angewendet werden konnte.

Die Option hat beim Modul cmd.run keine Auswirkung, weil der Exit-Status des Kommandos vom Master nicht ausgewertet werden kann. Verwenden Sie stattdessen das Modul cmd.run_all, zum Beispiel

salt '*' cmd.run_all "datex" --batch=1 --failhard

Dateien spontan kopieren

Vom Master auf die Minions

Mit salt-cp kopieren Sie Dateien ähnlich wie mit scp vom Master auf die Minions.

echo "Hallo Salt">/tmp/salt.txt
salt '*' file.mkdir /tmp/test
salt-cp '*' /tmp/salt.txt /tmp/test/salt.txt
salt '*' cmd.run "cat /tmp/test/salt.txt"
salt '*' file.remove /tmp/test/salt.txt
salt '*' file.rmdir /tmp/test

Windows Minions übersetzen '/' nach 'C:\'

Es geht auch anders herum

Der andere Weg, Dateien vom Minion an den Master zu senden, ist standardmäßig deaktiviert.

Setzen Sie file_recv: True und beispielsweise file_recv_max_size: 1024 in der Datei /etc/salt/master und starten Sie den Salt.Master neu.

Dateien können nun kopiert werden. Beispiel:

salt '*' cp.push /etc/fstab

Die kopierten Dateien finden Sie nun in /var/cache/salt/master/minions/<MINION-ID>

Status überwachen

Salt bietet mit dem Modul status die Möglichkeit, den Status der Minions zu überwachen. z.B.:

salt '*' status.loadavg

https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.status.html

results matching ""

    No results matching ""