> For the complete documentation index, see [llms.txt](https://thorstenkramm.gitbook.io/saltstack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://thorstenkramm.gitbook.io/saltstack/salt-module.md).

# 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 Salt-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 sogenannten Message-Broker melden sich die Minion über eine AES verschlüsselte Verbindung an. Master und Minion kommunizieren über diesen Nachrichtenkanal. Die Minion müssen keine TCP Ports öffnen.

{% hint style="info" %}
Achten Sie bei der Verwendung des Wildcard-Zeichens `*` auf die Anführungszeichen, damit das Wildcard-Zeichen nicht von der Shell intepretiert und die Dateiliste im aktuellen aufgelöt wird. 🤦
{% endhint %}

### 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 "cat /etc/os-release"
```

In diesem Beispiel wird `cmd.run` und das Kommando `cat /etc/os-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 Rocky 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 Salt Module kapseln die unterschiedlichen Kommandos der unterschiedlichen Distributionen und Betriebssysteme in ein einheitliches Set von Befehlen.

![Der Salt Minion übersetzt die "Modul-Sprache" in die Befehle der Distribution](/files/ItscgpP112rB1uhpvMdE)

![Salt kennt viele Distributionen](/files/-LbA8pfeX-GFHgN9rPKr)

### Weitere Beispiele

```
salt '*' pkg.install cowsay -l debug
salt '*' cmd.run "cowsay hallo"
salt '*' file.append /etc/motd \
        "This machine is managed by salt."
salt '*' hosts.add_host 8.8.8.8 google-public-dns-a.google.com
salt '*' status.loadavg
salt '*' status.diskusage / ext? xfs
```

📖 [mehr Status Module](https://docs.saltproject.io/en/latest/ref/modules/all/)
