SaltStack - zdalne wykonanie

Jedną z podstawowych koncepcji Salt jest zdalne wykonywanie. Salt może wykonywać polecenia w tysiącach systemów w ciągu kilku sekund. Sól używa własnego polecenia, aby wykonać tę funkcję. Rozumiemy teraz różne polecenia Salt do zdalnego wykonania w tym rozdziale.

Salt Command

Polecenie Salt umożliwia mistrzowi soli komunikowanie się z jednym lub wieloma Salt minions. Podstawowa składnia jest następująca:

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

Powyższa składnia polecenia składa się z trzech głównych komponentów.

  • target - Określa, które systemy są stosowane przez polecenie.

  • module.function- To rozkaz. Polecenia składają się z modułu i funkcji.

  • arguments - Dodatkowe dane potrzebne do wywołania funkcji.

Przyjrzyjmy się szczegółowo każdemu z elementów.

Co to jest komponent docelowy?

Cel to komponent, który umożliwia filtrowanie stronników (systemu zarządzanego) w celu uruchomienia funkcji. Poniżej zdefiniowano proste polecenie wykorzystujące komponent docelowy.

salt '*' test.ping

Spowoduje to, co następuje output -

minion2:
   True
minion1:
   True

Tutaj cel ‘*’reprezentuje wszystkie zarządzane systemy. „test'tutaj jest moduł i pingjest funkcją. Służy do testowania usługi ping w systemie zdalnym. Dowiemy się o różnych modułach i ich funkcjach w kolejnych rozdziałach.

Cele używające identyfikatora (stronnik)

Możesz wysłać polecenie do określonego stronnika, używając jego idw celu. Zamiast używać'*', możesz go zastąpić za pomocą minion id. Jest to zdefiniowane poniżej.

salt 'minion1’ test.ping

Spowoduje to, co następuje output -

minion1:
   True

Cele za pomocą wyrażenia regularnego

Cele można filtrować według określonego wyrażenia regularnego. Jest to zdefiniowane poniżej.

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

Spowoduje to, co następuje output -

minion2:
   True
minion1:
   True

Cele za pomocą listy

Cele można jawnie określić na liście. Jest zdefiniowany w poniższym bloku kodu.

salt -L 'minion1,minion2' test.ping

Spowoduje to, co następuje output -

minion2:
   True
minion1:
   True

Cele według stanu

Cele można łączyć w jednym poleceniu, jak pokazano w bloku kodu poniżej.

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

Spowoduje to, co następuje output -

minion1:
   True
minion2:
   True

Moduł i funkcje (module.function)

Salt może wykonywać polecenia powłoki; aktualizować pakiety i rozpowszechniać pliki itp. jednocześnie we wszystkich zarządzanych systemach. Sól wykonuje te operacje za pomocą modułów. Salt posiada specjalne moduły dla wszystkich dostępnych funkcjonalności. Zrozummy różne moduły soli, posługując się prostym przykładem w tym rozdziale.

Polecenie powłoki

Salt wykonuje polecenia powłoki zdalnie w wielu systemach przy użyciu rozszerzenia cmd.runKomenda. Plikcmd jest głównym modułem i run jest jedną z funkcji dostępnych w cmdmoduł. Plikrun Funkcja umożliwia wykonanie dowolnego polecenia powłoki w systemie zdalnym, jak pokazano w bloku kodu poniżej.

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

Spowoduje to, co następuje 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
……………
……………

Pokaż użycie dysku

Sól zapewnia specjalny moduł, diskaby uzyskać pełne szczegóły dysku systemu zarządzanego. Plikdiskmodule ma usage funkcję zapytania o szczegóły.

salt '*' disk.usage

Spowoduje to, co następuje 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

Interfejsy sieciowe

Salt zapewnia oddzielny moduł, sieć i funkcję, interfejsy wewnątrz modułu do odpytywania informacji o interfejsie sieciowym o zarządzanych systemach.

salt '*' network.interfaces

Spowoduje to, co następuje 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

sys.doc Moduł wykonawczy

Funkcje soli można przesyłać do sys.docmoduł wykonawczy. Służy do pobierania szczegółowych informacji o dowolnym module bezpośrednio z wiersza poleceń. Funkcje soli są samodokumentujące. Całą dokumentację funkcji można pobrać z minionów za pomocą funkcji sys.doc (), która została zdefiniowana poniżej.

salt '*' sys.doc

Argumenty wywołania funkcji

Argumenty służą do dostarczania dodatkowych danych do wywołania funkcji. Poniżej podano prosty przykład argumentu.

salt '*' sys.doc pkg.install

Tutaj argument pkg.install to moduł do instalowania określonych pakietów.

Funkcja Pythona

Argumenty to parametry funkcji rozdzielane spacjami. Umożliwia przekazywanie kodu Pythona jako argumentów, jak podano poniżej.

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

Spowoduje to, co następuje 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]

Podobnie możesz użyć opcjonalnych słów kluczowych i rozszerzenia YAML format.