Profis greifen häufig zu Saltstack, um Server-Farmen parallel zu administrieren. Richtig angewandt spart dieselbe Technik auch in kleinen Netzwerken viel Arbeit.
Selbst in kleineren IT-Umgebungen lohnt es sich, die Systeme möglichst einheitlich zu verwalten. Der Aufwand für das Einarbeiten und den Einsatz von umfangreichen Tools für das Konfigurationsmanagement – etwa Ansible, Chef oder Puppet – lohnt sich dort aber selten. Häufig fallen nur einmalig zu erledigende Aufgaben an; dafür dauert das Schreiben von Rezepten (Chef) oder Manifesten (Puppet) als Overkill.
Alternativ nutzen viele Admins selbst geschriebene Skripte, die sie nacheinander auf einer mühevoll gepflegten Liste an Hosts ausführen. Solche Methoden funktionieren zwar, müssen aber die Besonderheiten der jeweiligen Plattformen berücksichtigen und mit eventuellen Zeitüberschreitungen beim Aufbau der Verbindung zurechtkommen.
Der Aufwand lässt sich senken, indem man auf eine bereits erprobte Lösung zurückgreift. Das entsprechende Werkzeug sollte nicht nur die Unterschiede von Distributionen und Betriebssystemen abstrahieren, sondern darüber hinaus einen eigenen Kommunikationsweg bereitstellen sowie Module mit vorgefertigten Befehlen und Makros mitbringen. So etwas bieten in der Regel Projekte aus dem sogenannten Orchestration- und Remote-Execution-Umfeld. Hier sticht Saltstack [1] dank seiner einfachen Bedienung, Geschwindigkeit und Skalierbarkeit unter der Konkurrenz hervor.
Saltstack
Der System- und Software-Architekt Thomas S. Hatch stand vor der beschriebenen Herausforderung, eine teils uneinheitliche Infrastruktur zentral pflegen zu müssen. Aus seiner in Python selbst geschriebenen Lösung ging schließlich das im März 2011 als Open-Source-Projekt veröffentlichte Saltstack (kurz “Salt”) hervor.
Es basiert auf einem zentralen Master, der seine Befehle durch Salt-“Minions” (engl.: Lakai, Knecht) auf den Zielsystemen ausführen lässt. Die Kommunikation zwischen dem Master und den Minions erfolgt nicht via SSH, sondern über die bekannte Message-Bus-Bibliothek ZeroMQ [2] und damit asynchron. Verschiedene Module bieten von Haus aus eine ganze Palette an Kommandos und Abfolgen von Befehlen an, mit denen Sie jeweils spezifische Aufgaben ausführen. Zudem ermöglicht ein weiteres Modul das Absetzen von beliebigen Linux-Kommandos. Sobald Sie über den Master Aktionen auslösen, wartet das Werkzeug auf die Ausführung auf den Minions und stellt anschließend das Resultat dar.
Ob Sie Salt nur unter Linux verwenden, auf dem Master-Host und den Zielsystemen unterschiedliche Distributionen laufen, oder Sie gar FreeBSD einsetzen, ist egal: Salt unterstützt eine ganze Reihe von Betriebssystemen, einige davon allerdings nur als Minions, wie etwa Windows [3]. Eine Liste aller fraglichen Plattformen finden Sie online [4]. Durch die mitgelieferten Module kippen Sie die Befehle in einheitlicher Form ein. Erst die Module auf den Minions übersetzen diese in plattformspezifische Kommandos.
Installation
Als Master verwenden Sie eine physikalische oder auch eine virtuelle Maschine – die Anforderungen fallen selbst bei großen Installationen so gering aus, dass der Master keine besonderen Ansprüche stellt. In der Regel können Sie sowohl den Master, als auch die Minions aus den jeweiligen offiziellen Paketquellen einrichten. Allerdings kann es bei zu großen Unterschieden der angebotenen Salt-Versionen zu Kompatibilitätsproblemen aufgrund unterschiedlicher Modulumfänge kommen. Statten Sie besser alle Minions auf eine einheitliche Weise mit der gleichen Version von Salt aus.
Für unsere Tests haben wir der Einfachheit halber eine Reihe virtueller Maschinen erstellt, die sich untereinander sehen können. Ein Ubuntu-System beherbergt den Master, Suse-, Debian- und Fedora-VMs dienen als Minions. Eine genaue Übersicht samt OS-Versionen und IPs finden Sie in der Tabelle “Übersicht Labor-VMs”.
Übersicht Labor-VMs
| Hostname | OS | IP | Rolle |
|---|---|---|---|
ub1404 |
Ubuntu 14.04 | 192.168.178.39 |
Master |
deb7 |
Debian 7 | 192.168.178.40 |
Minion |
linux-x3b4 |
OpenSuse 13.2 | 192.168.178.41 |
Minion |
fedora23 |
Fedora 23 | 192.168.178.44 |
Minion |
Den Master richten Sie unter Ubuntu 14.04 mit dem Kommando sudo apt-get install salt-master ein. Damit der passende Minion unter Debian 7 bereitsteht, passen Sie die Paketquellen an, indem Sie folgende Zeile an die Datei /etc/apt/sources.list anhängen:
deb http://debian.saltstack.com/debian wheezy-saltstack main
Nach einem sudo apt-get update war der Minion dann mittels sudo apt-get install salt-minion installiert. Unter OpenSuse 13.2 hingegen genügt der Aufruf von Zypper (sudo zypper install salt-minion), während unter Fedora*23 DNF die Arbeit verrichtet (sudo dnf install salt-minion).
Konfiguration
Beim Start versuchen die Minions standardmäßig, sich mit dem Master zu verbinden. Haben Sie kein solches Ziel konfiguriert, sucht die Software automatisch in der DNS-Domäne nach dem Eintrag salt. Sie legen daher entweder einen entsprechenden A-Record an, der auf den Master zeigt (im Labor war das Ziel die IP-Adresse 192.168.178.39), oder Sie konfigurieren die Salt-Minions von Hand.
Öffnen Sie dazu auf jedem System, auf dem ein Minion läuft, die Konfigurationsdatei /etc/salt/minion mit einem Editor und suchen Sie nach der Zeile, die mit #master: beginnt. Entfernen Sie dort das Kommentarzeichen und ändern Sie die Zeile ab, in unserem Beispiel in master: 192.168.178.39 (Abbildung 1). Die IP-Adresse aus dem Beispiel ersetzen Sie durch jene, die in Ihrem Netzwerk auf den Master zeigt. Nach den Änderungen müssen Sie den Minion neu starten.

Abbildung 1: Falls die automatische Konfiguration versagt, stellen Sie die entsprechenden Optionen des Salt-Masters von Hand ein.
Befindet sich auf dem lokalen System oder im Netzwerk eine Firewall, die unter Umständen die Kommunikation zwischen Master und Minions filtert, müssten Sie auf allen beteiligten Systemen die TCP-Ports 4505 und 4506 freigeben. Bei Fragen oder Problemen ziehen Sie am besten die geeignete Stelle in der offiziellen Dokumentation zurate [5].
Die Verbindung zwischen dem Salt-Master und seinen Minions läuft über eine verschlüsselte Verbindung, für die sich beide Seiten authentifizieren. Dass die Minions Befehle von einem Master akzeptieren, setzt voraus, dass Sie Ihren Schlüssel zunächst beim Master hinterlegen und dieser den Key akzeptiert. Sobald ein Minion sich das erste Mal mit einem neuen Master verbindet, findet der entsprechende Austausch automatisiert statt. Auf dem Master sehen Sie sich mittels sudo salt-key -L die Liste der Minions an, die Ihren Schlüssel eingereicht haben (Abbildung 2).
Wenn Sie diesen Minions auf Anhieb vertrauen, nehmen Sie mit dem Kommando sudo salt-key -A alle Schlüssel in einem Rutsch an und bestätigen dies mit Y beziehungsweise j. Möchten Sie hingegen die Identität der einzelnen Minions überprüfen, finden Sie dazu in der Manpage zu salt-key entsprechende Hilfestellungen. Mit einem erneuten Aufruf von sudo salt-key -L verifizieren Sie die Übernahme (Abbildung 2).
Alle Minions, die sich unterhalb von Accepted Keys grün aufgelistet finden, nehmen künftig Befehle vom Master entgegen. Testweise sollten Sie zudem prüfen, ob der Master die Minions online sieht, wozu Sie das Kommando sudo salt-run manage.status nutzen. Abbildung 3 zeigt das Ergebnis.

Abbildung 3: Haben Sie die Minions ordnungsgemäß beim Master angemeldet, steht der Kommunikation zwischen den Rechnern nichts mehr im Wege.
Auswahl des Ziels
Wem ein Heer an Befehlsempfängern zur Verfügung steht, der richtet seine Kommandos entweder an alle Mitglieder oder nur einen Teil der Gruppe. Dem Salt-Master geht es nicht anders: Auch hier legen Sie fest, mit welchen seiner Minions er kommuniziert. Dementsprechend ist das Kommando von Saltstack aufgebaut, das Sie hauptsächlich verwenden: Zunächst rufen Sie es auf (salt), im Anschluss nennen Sie die Ziele (alle wählen Sie mit "*" aus) und danach folgen das Modul sowie die darin enthaltene Funktion.
Um die Verbindung zu den Minions zu prüfen, verwenden Sie den Befehl aus Listing 1. Das Targeting der Minions, also die Auswahl der Ziele, ist eines von zwei zentralen Elementen bei der Arbeit mit dem Kommando. Salt bringt dazu eine ganze Reihe von Möglichkeiten mit, etwa, um nur einen bestimmten Host anzusprechen (Listing 2).
Listing 1
$ sudo salt "*" test.ping linux-x3b4.site: True fedora23.fritz.box: True deb7: True
Listing 2
$ sudo salt "deb7" test.version deb7: 2015.5.3
Salt beherrscht zudem die Möglichkeit, Minions auf Grundlage von regulären Ausdrücken und Mustern anzusteuern. Durch Angabe von d* beziehen Sie beispielsweise alle Systeme mit ein, deren Namen mit dem Buchstaben d beginnt. Dagegen richtet sich file[1-5] an die Minions mit der Kennung file1 bis file5. Um etwa in unserer Testkonfiguration alle drei Minions gezielt manuell anzusprechen, könnten Sie beispielsweise die Anfangsbuchstaben ihrer Namen verwenden, auf die dann eine beliebige Zeichenkette folgen darf (Listing 3).
Listing 3
$ sudo salt "[d,l,f]*" test.version linux-x3b4.site: 2014.1.11 deb7: 2015.5.3 fedora23.fritz.box: 2015.5.5
Über sogenannte Compound-Matcher verknüpfen Sie mehrere (nahezu beliebig viele) Kriterien miteinander, um ein System auszuwählen. Diese Schlüsselwörter aktivieren Sie mit einem -C vor der Auswahl der Ziele. Innerhalb der Anführungen dürfen Sie mehrere Informationen angeben, die Sie mittels and beziehungsweise and not verknüpfen. Ein simples Beispiel zeigt Listing 4: Damit wählen Sie zunächst alle Minions aus und schließen dann den Debian-Host aus.
Listing 4
$ sudo salt -C "* and not deb*" test.ping linux-x3b4.site: True fedora23.fritz.box: True
Die Minions wählen Sie auf Grundlage von Eigenschaften wie dem Betriebssystem, der IP-Adresse und vielen anderen Faktoren aus. Mehr Informationen dazu finden Sie weiter unten im Abschnitt “Eigenschaften”. Übrigens: Wenn Sie den Eindruck haben, ein Salt-Minion sei ungeschickt benannt, legen Sie den Namen selbst in der Datei /etc/salt/minion_id fest. Generell können Sie beliebige Namen vergeben, im Alltag haben sich jedoch das Verwenden des FQDN oder eine Kombination aus Rolle und Nummer bewährt.
Das in Listing 4 verwendete Modul test findet im Alltag übrigens meist keine Verwendung. Es dient vielmehr der Suche nach Fehlern und dem schnellen Prüfen der Konnektivität. Weitere Funktionen von test finden Sie online in der Dokumentation [6]. Möchten Sie einen ausführlicheren Blick auf die Auswahl von Zielsystemen unter Salt werfen, finden Sie ebenfalls online entsprechende Dokumente [7].
Eigenschaften
Ein Salt-Minion kennt bestimmte Informationen über das System, auf dem er läuft, und hält diese in sogenannten Grains (engl.: Körner) vor. Diese enthalten unter anderem Angaben zum Betriebssystem, zur Netzwerkkonfiguration, zur Hardware oder zum BIOS. Der Befehl sudo salt "*" grains.ls liefert eine Liste sämtlicher Bezeichnungen der Grains auf allen Minions, während sudo salt "*" grains.items die Werte dazu ausgibt (Abbildung 4).

Abbildung 4: Salt erkennt von Haus aus zahlreiche wichtige Eigenschaften eines Systems, auf dem ein passender Minion läuft.
Oft benötigen Sie jedoch nur eine bestimmte Information und fragen dann lediglich einzelne Grains ab. Listing 5 demonstriert das beispielsweise für das Betriebssystem. Zudem lassen sich Minions anhand von Grains adressieren, was es ermöglicht, das Minion-Targeting um viele relevante Bedingungen zu erweitern. Die einfachste Variante wählt Minions auf Grundlage eines Grains aus, zum Beispiel der CPU-Architektur (Listing 6, erste Zeile).
Listing 5
$ sudo salt "*" grains.item os deb7: os: Debian linux-x3b4.site: os: openSUSE fedora23.fritz.box: os: Fedora
Listing 6
$ sudo salt -G "cpuarch:x86_64" test.ping $ sudo salt -C "mem_total:984 and not linux-x3b4.site" test.ping
Noch mächtiger sind Grains allerdings, wenn Sie sie beim Targeting mit anderen Kriterien verbinden, wie das Beispiel aus der zweiten Zeile von Listing 6 zeigt: Es adressiert ausschließlich Minions, die über 984 MByte Arbeitsspeicher verfügen und nicht denselben Namen tragen wie unser OpenSuse-Testsystem.
Standardmäßig definiert Salt von Haus aus einige wichtige Grains. In vielen Fällen ist es aber sinnvoll, diesen Definitionen eigene hinzuzufügen, etwa Angaben über den Standort oder die Rolle(n) des Rechners. Saltstack unterstützt Sie bei diesem Vorhaben mit einer umfangreichen Dokumentation [8].
Vielfalt an Modulen
Zwar bietet Saltstack die Möglichkeit, direkt Shell-Kommandos an die Minions abzusetzen, doch in der Praxis hat es sich bewährt, auf eines der vorgefertigten Module zurückzugreifen. Diese decken eine Vielzahl an Szenarien ab, angefangen vom Verwalten der Benutzer oder Pakete bis hin zur Interaktion mit Datenbanken. Alle Module bieten auf die unterschiedlichen Plattformen zugeschnittene Kommandos und Möglichkeiten, um gegebenenfalls Ausgaben richtig zu verarbeiten. Daher sollten Sie Module grundsätzlich reinen Shell-Kommandos vorziehen, solange sie die gewünschten Funktionen bereitstellen.
Eine vollständige Liste aller verfügbaren Salt-Module finden Sie online [9]. Beachten Sie, dass abhängig von der eingesetzten Salt-Version unterschiedlich viele Module bereitstehen. Nur die neueste Version kommt mit sämtlichen Modulen zurecht. Besonders ambitionierte Benutzer finden in der Dokumentation Hinweise, um eigene Module zu schreiben und einzubinden [10]. Neben gewöhnlichen Modulen kennt Salt auch virtuelle Module. Bei deren Einsatz stellen Sie keinen Unterschied fest, unter der Haube rufen solche Erweiterungen jedoch weitere Module auf, die dann jeweils die gewünschte Aufgabe erfüllen.
Ein solches virtuelles Modul ist beispielsweise das Paketmodul pkg: Ein Blick in die offizielle Dokumentation [11] zeigt, dass es Kommandos an gewöhnliche Module durchreicht. Letztere wählt Salt anhand der Plattform auf dem Zielsystem aus. Übrigens: Sobald Sie beginnen, sich mit einem Modul zu beschäftigen, ist es meist sinnvoll, sich anhand der offiziellen Dokumentation über alle Funktionen der Erweiterung zu informieren.
Pkg beinhaltet zahlreiche wichtige Aufrufe: So bietet es etwa die Möglichkeit, Pakete plattformübergreifend zu installieren oder zu entfernen, die Paketquellen zu verwalten und anstehende Updates zu erledigen. Für Systeme mit dem Paketmanager Apt findet sich online eine vollständige Übersicht über die Kommandos [12].
Die Aufrufe aus diesem Untermodul gleichen übrigens weitgehend jenen der anderen Module, die unter der Haube mit Yum oder Zypper arbeiten. Um plattformübergreifend abzufragen, ob ein bestimmtes Paket auf den Systemen installiert ist, fragen Sie einfach die Version ab (Listing 7). Um ein Paket nachzuinstallieren genügt der Aufruf von pkg.install (Listing 8). Der Ausgabe entnehmen Sie, ob das Paket bereits eingerichtet war oder gegebenenfalls aktualisiert beziehungsweise nachinstalliert wurde. Antwortet ein System gar nicht, war das Paket bereits in der aktuellen Version vorhanden. Wünschen Sie das explizite Aktualisieren der Paketlisten (apt-get update), geben Sie vor dem Namen des Pakets einfach die Option refresh=True an.
Listing 7
$ sudo salt "*" pkg.version grep deb7: 2.12-2 linux-x3b4.site: 2.20-2.4.1 fedora23.fritz.box: 2.21-7
Listing 8
$ sudo salt "*" pkg.install refresh=True unzip
linux-x3b4.site:
----------
fedora23.fritz.box:
----------
deb7:
----------
unzip:
----------
new:
6.0-8+deb7u5
old:
6.0-8+deb7u4
Ähnlich simpel wie das Verwalten der Pakete läuft unter Salt das Bearbeiten von Dateien: Über das File-Modul [13] fragen Sie nicht nur Metadaten zu Dateien ab (etwa die aktuellen Linux-Rechte, den Eigentümer, die Dateigröße und einige mehr), sondern können Files auch löschen, ergänzen oder mittels regulärer Ausdrücke manipulieren. Als sehr nützlich erweist sich das Kommando file.append, mit dem Sie eine oder mehrere Zeilen an die Datei anhängen. Mittels file.comment und file.comment_line kommentieren Sie Teile einer Datei aus, mit file.rename ändern Sie deren Namen.
TIPP
In der Online-Dokumentation finden Sie viele Beispiele [13], die zeigen, wie Sie Dateien auf mehreren Systemen gleichzeitig manipulieren.
Listing 9 zeigt, wie Sie die Datei /etc/motd um einen Eintrag erweitern. Wenn Sie Ihre Kenntnisse mit Salt aufbauen wollen, böte es sich an, als Experiment die Änderung im Anschluss rückgängig zu machen, indem Sie die frisch hinzugefügte Zeile erst mittels File-Modul kommentieren und dann mit einem anderen Aufruf löschen.
Listing 9
$ sudo salt "*" file.append /etc/motd "Dieses System wird mit Salt verwaltet." linux-x3b4.site: Wrote 1 lines to "/etc/motd" deb7: Wrote 1 lines to "/etc/motd" fedora23.fritz.box: Wrote 1 lines to "/etc/motd"
Benutzer verwalten
Gerade, wenn Sie mehrere Systeme verwalten, aber keinen Verzeichnisdienst verwenden, wollen Sie Benutzer womöglich trotzdem zentral managen. Wenig überraschend bietet Salt ein Modul für diese Aufgabe an. Mit pw_user haben Sie die Möglichkeit, neue Benutzer hinzuzufügen, Benutzerkonten zu löschen und einzelne Attribute – wie etwa das Home-Verzeichnis – zu ändern [14]. Selbst das Umbenennen von bestehenden Benutzern gelingt damit.
Listing 10 zeigt, wie Sie mittels Salt einen neuen Benutzer anlegen. Beachten Sie den Aufruf des Moduls mit dem Schlüsselwort user, nicht etwa mit pw_user. Um das Modul näher kennenzulernen, bietet es sich an, sich zunächst alle Benutzer der Systeme aufzulisten und im Anschluss den Benutzer praktikant wieder zu löschen.
Listing 10
$ sudo salt "*" user.add praktikant shell=/bin/bash deb7: True linux-x3b4.site: True fedora23.fritz.box: True
Passend zum Anlegen von Benutzern bietet Salt ein Modul zum Verwalten des SSH-Dienstes an. Das ergibt Sinn, wenn Sie für einen neuen Benutzer einen SSH-Schlüssel generieren (ssh-keygen -t rsa) und diesen mit Salt auf allen bestehenden Systemen ausrollen. Die Dokumentation [15] des zuständigen Moduls zeigt, wie das geht.
Wenn Sie Ihre Systeme nicht nur im Monitoring begutachten, sondern gelegentlich Informationen zu den jeweiligen Zuständen einsammeln möchten, bietet sich ein Blick auf das Modul status an [16]. Mittels des Aufrufs status.all_status sehen Sie die Daten ein, die das Modul sammelt. Gezielter greifen Sie mit status.diskusage auf die Werte der Festplatten oder mit status.loadavg auf die Lastdaten zu.
Sollte Salt kein Modul für die gewünschte Funktionalität bieten, setzen Sie im Notfall einfach Shell-Kommandos auf den Systemen ab. Mit dem Modul cmdmod weisen Sie den Master an, die Befehle auf den Minions auszuführen [17]. Mit dem Aufruf cmd.run und einem nachgestellten Befehl in doppelten oder einfachen Anführungszeichen setzen Sie die Kommandos ab (Abbildung 5). Achten Sie darauf, dass Sie die Funktionen aus diesem Modul mit cmd und nicht etwa mit cmdmod aufrufen.
Mehr als Module
Neben den Modulen bietet Salt einige Kommandos an, die Zusatzfunktionen abdecken. Der Befehl salt-cp etwa kopiert Dateien vom Master auf die Minions (Listing 11, erste Zeile). Das erlaubt es, Dateien wie /etc/hosts, /etc/motd oder andere Konfigurationsdateien zentral zu pflegen. Dieser Befehl ist aber eigentlich nur als Notlösung gedacht: In der Regel werden Sie bereits vorhandene Dateien meist gezielt mit dem File-Modul manipulieren oder – wie im Fall der Konfigurationsdateien – auf das Management-Modul zurückgreifen.
Listing 11
$ salt-cp "*" "/home/vhoebel/motd" "/etc/motd" $ sudo salt-run jobs.list_job $ salt-run jobs.lookup_jid "20140408130655508732" | less
Der Befehl salt-run dient zur Interaktion mit Salt und kommt beispielsweise zum Einsatz, um eine Liste an nicht erreichbaren Minions zu erstellen (sudo salt-run manage.down). Unter Salt bezeichnet man jede Verwendung von Modulen als “Job” – mit salt-run geben Sie eine Liste der letzten Jobs aus (Listing 11, zweite Zeile). Möchten Sie sich die Ausgabe eines bestimmten Salt-Jobs erneut ansehen, geben Sie dazu die Job-ID an (Listing 11, letzte Zeile). Für die einzelnen Kommandos greift salt-run auf eigene Module zurück [18].
Fazit
Saltstack bietet aufgrund der großen Anzahl von eingebauten Modulen nahezu unbegrenzte Möglichkeiten beim Verwalten von Systemen. Selbst ohne den Einsatz des hauseigenen Konfigurationsmanagements haben Sie Ihre Rechner fest im Griff – ganz egal, ob Sie Benutzer verwalten, Systeme auf dem aktuellen Stand halten oder sich schlicht eine Übersicht über die eigenen Server verschaffen wollen.
Selbst in heterogenen Netzen mit Windows-Maschinen steht dem Einsatz von Salt nichts entgegen: Dank der eigenen Software-Verwaltung installieren Sie auf Windows-Clients einheitliche Programme wie Firefox; andere von Linux bekannte Funktionen stehen ebenfalls bereit. Salt erweist sich damit als vielseitiges Talent: Es macht den Einsatz von zahlreichen Werkzeugen und selbst geschriebenen Skripten überflüssig.
Der Autor
Valentin Höbel arbeitet als Cloud Architect für den VoIP-Spezialisten NFON AG in München. Wenn er in seiner Freizeit nicht gerade am Kickertisch steht, wirft er einen Blick auf aktuelle Open-Source-Technologien.
Glossar
-
FQDN
-
Fully Qualified Domain Name. Der vollständige Name einer Domain aus (von hinten nach vorn) Root-Label, Top-Level-Domain (TLD) sowie 2nd- und 3rd-Level-Label. So bezeichnet der FQDN
www.linux-user.de.beispielsweise den Webserver unserer Zeitschrift. Da das Root-Label immer aus einer leeren Zeichenkette besteht, gibt man es selten an. In den Resource Records auf Name-Servern muss es aber vorhanden sein.
Infos
[1] SaltStack-Projekt:http://saltstack.com/community/
[2] ZeroMQ: http://zeromq.org/
[3] Windows-Minions: https://docs.saltstack.com/en/latest/topics/installation/windows.html
[4] Unterstützte Betriebssysteme: https://docs.saltstack.com/en/latest/topics/tutorials/salt_bootstrap.html#supported-operating-systems
[5] Port-Freigaben für Salt: https://docs.saltstack.com/en/latest/topics/tutorials/firewall.html
[6] Modul test: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.test.html
[7] Minion-Targeting: https://docs.saltstack.com/en/latest/topics/targeting/
[8] Grains selbst definieren: https://docs.saltstack.com/en/latest/topics/targeting/grains.html
[9] Eingebaute Salt-Module: https://docs.saltstack.com/en/develop/ref/modules/all/index.html
[10] Eigene Module schreiben : https://docs.saltstack.com/en/latest/ref/modules/
[11] Modul pkg: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.pkg.html
[12] Paketmodul für Apt-basierte Systeme: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.aptpkg.html#module-salt.modules.aptpkg
[13] File-Modul: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.file.html
[14] User-Verwaltung mit Salt: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.pw_user.html
[15] SSH-Kommandos: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.ssh.html
[16] Status-Modul: https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.status.html
[17] Shell-Kommandos mit Salt: https://docs.saltstack.com/en/develop/ref/modules/all/salt.modules.cmdmod.html
[18] Eingebaute Runner-Module: https://docs.saltstack.com/en/latest/ref/runners/all/index.html







