SaltStack - Remote-Ausführung

Eines der Kernkonzepte von Salt ist die Remote-Ausführung. Salt kann Befehle in Sekundenschnelle über Tausende von Systemen ausführen. Salt verwendet einen eigenen Befehl, um diese Funktionalität auszuführen. Lassen Sie uns nun die verschiedenen Salt-Befehle für die Remote-Ausführung in diesem Kapitel verstehen.

Salzbefehl

Mit dem Salt-Befehl kann der Salt-Master mit einem oder mehreren kommunizieren Salt minions. Die grundlegende Syntax lautet wie folgt:

salt '<target>' <module.function> [arguments]

Die obige Befehlssyntax besteht aus den folgenden drei Hauptkomponenten.

  • target - Legt fest, welche Systeme vom Befehl angewendet werden.

  • module.function- Es ist ein Befehl. Befehle bestehen aus einem Modul und einer Funktion.

  • arguments - Zusätzliche Daten zum Aufrufen der Funktion.

Lassen Sie uns jede der Komponenten im Detail verstehen.

Was ist die Zielkomponente?

Ziel ist eine Komponente, mit der Sie Schergen (verwaltetes System) filtern können, um die Funktion auszuführen. Ein einfacher Befehl unter Verwendung der Zielkomponente ist unten definiert.

salt '*' test.ping

Es wird Folgendes erzeugt output - -

minion2:
   True
minion1:
   True

Hier das Ziel ‘*’repräsentiert alle verwalteten Systeme. Das 'test'hier ist ein Modul und pingist eine Funktion. Dies wird verwendet, um den Ping-Dienst im Remote-System zu testen. In den folgenden Kapiteln lernen wir die verschiedenen Module und ihre Funktionen kennen.

Ziele mit ID (Diener)

Sie können einen Befehl an einen bestimmten Diener senden, indem Sie dessen idim Ziel. Anstatt zu verwenden'*'können Sie es mit ersetzen minion id. Es ist unten definiert.

salt 'minion1’ test.ping

Es wird Folgendes erzeugt output - -

minion1:
   True

Ziele mit regulärem Ausdruck

Ziele können nach bestimmten regulären Ausdrücken gefiltert werden. Es ist unten definiert.

salt -E 'minion[0-9]' test.ping

Es wird Folgendes erzeugt output - -

minion2:
   True
minion1:
   True

Ziele mit Liste

Ziele können explizit in einer Liste angegeben werden. Es wird im folgenden Codeblock definiert.

salt -L 'minion1,minion2' test.ping

Es wird Folgendes erzeugt output - -

minion2:
   True
minion1:
   True

Ziele nach Zustand

Ziele können in einem Befehl kombiniert werden, wie im folgenden Codeblock gezeigt.

salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping

Es wird Folgendes erzeugt output - -

minion1:
   True
minion2:
   True

Modul und Funktionen (Modul.Funktion)

Salt kann Shell-Befehle ausführen. Aktualisieren Sie Pakete und verteilen Sie Dateien usw. auf allen verwalteten Systemen gleichzeitig. Salt führt diese Operationen mit Modulen aus. Salt verfügt über spezielle Module für alle verfügbaren Funktionen. Lassen Sie uns die verschiedenen Salt-Module anhand eines einfachen Beispiels in diesem Kapitel verstehen.

Shell-Befehl

Salt führt Shell-Befehle mithilfe von cmd.runBefehl. Dascmd ist das Hauptmodul und run ist eine der Funktionen, die in der cmdModul. Dasrun Mit dieser Funktion kann jeder Shell-Befehl im Remote-System ausgeführt werden, wie im folgenden Codeblock gezeigt.

salt '*' cmd.run 'ls -l /etc'

Es wird Folgendes erzeugt output - -

minion2:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:14 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
……………
……………
minion1:
   total 868
   drwxr-xr-x 7 root root    4096 Jan 26 22:10 X11
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 acpi
   -rw-r--r-- 1 root root    2981 Jan 26 20:48 adduser.conf
   -rw-r--r-- 1 root root      10 Jan 26 21:04 adjtime
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 alternatives
   drwxr-xr-x 3 root root    4096 Jan 26 20:53 apm

   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apparmor
   drwxr-xr-x 9 root root    4096 Jan 26 21:02 apparmor.d
   drwxr-xr-x 3 root root    4096 Jan 26 21:02 apport
   drwxr-xr-x 6 root root    4096 Jan 29 07:09 apt
   drwxr-xr-x 2 root root    4096 Jan 26 22:10 at-spi2
   -rw-r----- 1 root daemon   144 Oct 21  2013 at.deny
   -rw-r--r-- 1 root root    2177 Apr  9  2014 bash.bashrc
   -rw-r--r-- 1 root root      45 Mar 22  2014 bash_completion
……………
……………

Festplattennutzung anzeigen

Salz bietet ein spezielles Modul, diskum die vollständigen Datenträgerdetails des verwalteten Systems abzurufen. Dasdiskmodule hat ein usage Funktion zum Abfragen der Details.

salt '*' disk.usage

Es wird Folgendes erzeugt output - -

minion1:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192
minion2:
   ----------
   /:
      ----------
      1K-blocks:
         41251136
      available:
         37852804
      capacity:
         5%
      filesystem:
         /dev/sda1
      used:
         1662420
   /dev:
      ----------
      1K-blocks:
         503908
      available:
         503896
      capacity:
         1%
      filesystem:
         udev
      used:
         12
   /run:
      ----------
      1K-blocks:
         101780
      available:
         101412
      capacity:
         1%
      filesystem:
         tmpfs
      used:
         368
   /run/lock:
      ----------
      1K-blocks:
         5120
      available:
         5120
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /run/shm:
      ----------
      1K-blocks:
         508884
      available:
         508872
      capacity:
         1%
      filesystem:
         none
      used:
         12
   /run/user:
      ----------
      1K-blocks:
         102400
      available:
         102400
      capacity:
         0%
      filesystem:
         none
      used:
            0
   /sys/fs/cgroup:
      ----------
      1K-blocks:
         4
      available:
         4
      capacity:
         0%
      filesystem:
         none
      used:
         0
   /vagrant:
      ----------
      1K-blocks:
         303114632
      available:
         252331440
      capacity:
         17%
      filesystem:
         none
      used:
         50783192

Netzwerk Schnittstellen

Salt bietet ein separates Modul, Netzwerk und Funktionsschnittstellen innerhalb des Moduls, um die Netzwerkschnittstelleninformationen zu den verwalteten Systemen abzufragen.

salt '*' network.interfaces

Es wird Folgendes erzeugt output - -

minion1:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:34:10:52
      inet:
         |_
            ----------
            address:
               192.168.50.11
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe34:1052
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True
minion2:
   ----------
   eth0:
      ----------
      hwaddr:
         08:00:27:04:3e:28
      inet:
         |_
            ----------
            address:
               10.0.2.15
            broadcast:
               10.0.2.255
            label:
               eth0
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fe04:3e28
            prefixlen:
               64
            scope:
               link
      up:
         True
   eth1:
      ----------
      hwaddr:
         08:00:27:a7:31:8e
      inet:
         |_
            ----------
            address:
               192.168.50.12
            broadcast:
               192.168.50.255
            label:
               eth1
            netmask:
               255.255.255.0
      inet6:
         |_
            ----------
            address:
               fe80::a00:27ff:fea7:318e
            prefixlen:
               64
            scope:
               link
      up:
         True
   lo:
      ----------
      hwaddr:
         00:00:00:00:00:00
      inet:
         |_
            ----------
            address:
               127.0.0.1
            broadcast:
               None
            label:
               lo
            netmask:
               255.0.0.0
      inet6:
         |_
            ----------
            address:
               ::1
            prefixlen:
               128
            scope:
               host
      up:
         True

Ausführungsmodul sys.doc

Salzfunktionen können an die gesendet werden sys.docAusführungsmodul. Dies wird verwendet, um die Details zu jedem Modul direkt über die Befehlszeile abzurufen. Die Salt-Funktionen sind selbstdokumentierend. Die gesamte Funktionsdokumentation kann über die unten definierte Funktion sys.doc () von den Minions abgerufen werden.

salt '*' sys.doc

Argumente für einen Funktionsaufruf

Argumente werden verwendet, um zusätzliche Daten für den Funktionsaufruf bereitzustellen. Ein einfaches Argumentbeispiel ist unten angegeben.

salt '*' sys.doc pkg.install

Hier das Argument pkg.install ist ein Modul zum Installieren bestimmter Pakete.

Python-Funktion

Argumente sind durch Leerzeichen getrennte Parameter für die Funktion. Damit kann der Python-Code wie unten angegeben als Argumente übergeben werden.

salt '*' cmd.exec_code python 'import sys;print sys.version'

Es wird Folgendes erzeugt output - -

minion2:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]
minion1:
   2.7.6 (default, Oct 26 2016, 20:30:19) 
   [GCC 4.8.4]

Ebenso können Sie optionale Schlüsselwörter und die verwenden YAML Format auch.