Page cover image

Salt States

Systeme in eine definierten Zustand bringen

Sates sind fertige "Rezepte", die Sie in Form von Dateien auf dem Master anlegen. Einzelne oder alle States werden auf Minions ausgerollt und sorgen dafür, dass der Minion einen definierten Zustand erreicht.

States verwenden

Die aktuellen Versionen von Salt verwenden das Verzeichnis /srv/salt als Root-Ordner für States.

Legen Sie das Verzeichnis /srv/salt an und speichern Sie die folgende Datei:

/srv/salt/test.sls
date>/tmp/salt.date:
  cmd.run:
    - runas: root

Starten die den ersten Rollout

salt '*' state.apply test

File-Root ändern

Schützen sie das States Verzeichnis maximal. Wem es gelingt eine Datei im States-Root-Verzeichnis abzulegen, kann die volle Kontrolle über alle Minions übernehmen.

Aus diesem Grund sollte der Salt-Master auf einem dedizierten Host installiert werden, auf dem nur Salt-Administratoren Zugang haben.

States bedürfen keiner speziellen Aktivierung. Die Standard-Installation hat States bereits aktiviert.

Falls Sie müssen nicht das Standard-Verzeichnis verwenden möchten, geben sie dem Salt-Master bekannt geben, in welchem Verzeichnis Sie die State-Definitionen speichern möchten. Dazu erstellen Sie die Datei /etc/salt/master.d/file_roots.conf und tragen folgendes ein:

/etc/salt/master.d/file_roots.conf
file_roots: 
  base:
    - /srv/salt

Legen Sie das Verzeichnis an und starten Sie den Master neu.

mkdir /srv/salt
systemctl restart salt-master

States anwenden

Push: Vom Master zu den Minions

Die in einer State-Datei definierten Zustände werden wie folgt angewenden bzw. ausgerollt:

root@salt-master:~# salt '*' state.apply <STATE>
root@salt-master:~# salt '*' state.apply <DIR>.<STATE>

Die Endung .sls wird nicht mit angegeben. Ordner-Hierarchien werden mit . und nicht mit / angeben. salt '*' state.apply webserver.apache rollt die State-Datei /srv/salt/webserver/apache.sls oder die Datei /srv/salt/webserver/apache/init.sls aus.

🙋 Befindet sich in einem Ordner eine Datei init.sls kann state.apply "auf den Ordner" angewendet werden und init.sls wird als Einstieg verwendet.

Pull: Minions "ziehen" vom Master

Das Ausrollen eines States kann auch vom Minion veranlasst werden.

root@minion:~# salt-call state.apply <STATE>
root@minion:~# salt-call state.apply <DIR>.<STATE>

Gesprächigkeit

Wenn Sie weniger oder mehr Output möchten, verwenden Sie die folgenden Optionen:

root@salt-master:~# salt '*' state.apply <STATE> -l quiet --state-verbose=false
root@salt-master:~# salt '*' state.apply <STATE> --state-output=changes
root@salt-master:~# salt '*' state.apply test --out=table
root@minion:~# salt-call -l debug state.apply <STATE>

Wenn Sie den Fehler in einer SLS-Datei nicht finden können, oder wenn Sie genau sehen möchten, in welche System-Kommandos ein Minion einen State übersetzt, nutzen Sie salt-call -l debug auf einem Minion. An diese Debug-Informationen kommt nur der Minion dran und diese werden nicht zum Master übertragen.

Last updated