SaltStack - Esecuzione remota

Uno dei concetti fondamentali di Salt è l'esecuzione remota. Salt può eseguire comandi su migliaia di sistemi in pochi secondi. Salt utilizza il proprio comando per eseguire questa funzionalità. Vediamo ora di comprendere i diversi comandi Salt per l'esecuzione remota nel capitolo.

Comando di sale

Il comando Salt consente a Salt master di comunicare con uno o più Salt minions. La sintassi di base è la seguente,

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

La sintassi del comando precedente è costituita dai seguenti tre componenti principali.

  • target - Determina quali sistemi vengono applicati dal comando.

  • module.function- È un comando. I comandi sono costituiti da un modulo e da una funzione.

  • arguments - Dati aggiuntivi necessari per chiamare la funzione.

Cerchiamo di capire in dettaglio ciascuno dei componenti.

Qual è il componente target?

Target è un componente che ti consente di filtrare i minion (sistema gestito) per eseguire la funzione. Di seguito viene definito un semplice comando che utilizza il componente di destinazione.

salt '*' test.ping

Produrrà quanto segue output -

minion2:
   True
minion1:
   True

Ecco l'obiettivo ‘*’rappresenta tutti i sistemi gestiti. Il 'test'ecco un modulo e pingè una funzione. Viene utilizzato per testare il servizio ping nel sistema remoto. Apprenderemo i diversi moduli e le sue funzioni nei capitoli successivi.

Obiettivi che utilizzano ID (minion)

Puoi inviare un comando a un servitore specifico usando il suo idnel bersaglio. Invece di usare'*', puoi sostituirlo usando minion id. È definito di seguito.

salt 'minion1’ test.ping

Produrrà quanto segue output -

minion1:
   True

Obiettivi che utilizzano l'espressione regolare

I target possono essere filtrati da un'espressione regolare specifica. È definito di seguito.

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

Produrrà quanto segue output -

minion2:
   True
minion1:
   True

Obiettivi utilizzando List

I target possono essere specificati esplicitamente in un elenco. È definito nel seguente blocco di codice.

salt -L 'minion1,minion2' test.ping

Produrrà quanto segue output -

minion2:
   True
minion1:
   True

Obiettivi per condizione

I target possono essere combinati in un comando come mostrato nel blocco di codice seguente.

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

Produrrà quanto segue output -

minion1:
   True
minion2:
   True

Modulo e funzioni (module.function)

Salt può eseguire comandi della shell; aggiornare i pacchetti e distribuire file, ecc. in tutti i suoi sistemi gestiti contemporaneamente. Salt esegue queste operazioni utilizzando i moduli. Salt ha moduli speciali per tutte le funzionalità disponibili. Cerchiamo di capire i diversi moduli Salt utilizzando alcuni semplici esempi in questo capitolo.

Comando Shell

Salt esegue i comandi della shell in remoto su più sistemi utilizzando l'estensione cmd.runcomando. Ilcmd è il modulo principale e run è una delle funzioni disponibili in cmdmodulo. Ilrun funzione consente di eseguire qualsiasi comando della shell nel sistema remoto come mostrato nel blocco di codice seguente.

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

Produrrà quanto segue 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
……………
……………

Mostra utilizzo disco

Salt fornisce un modulo speciale, diskper ottenere i dettagli completi del disco del sistema gestito. Ildiskmodule ha un usage funzione per interrogare i dettagli.

salt '*' disk.usage

Produrrà quanto segue 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

Interfacce di rete

Salt fornisce un modulo, una rete e una funzione separati, interfacce all'interno del modulo per interrogare le informazioni dell'interfaccia di rete sui sistemi gestiti.

salt '*' network.interfaces

Produrrà quanto segue 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

Modulo di esecuzione sys.doc

Le funzioni del sale possono essere inviate a sys.docmodulo di esecuzione. Viene utilizzato per ottenere i dettagli su qualsiasi modulo direttamente dalla riga di comando. Le funzioni Salt sono auto-documentanti. Tutta la documentazione della funzione può essere recuperata dai minion tramite la funzione sys.doc (), definita di seguito.

salt '*' sys.doc

Argomenti per una chiamata di funzione

Gli argomenti vengono utilizzati per fornire dati aggiuntivi per la chiamata di funzione. Di seguito viene fornito un semplice esempio di argomento.

salt '*' sys.doc pkg.install

Qui, l'argomento pkg.install è un modulo per installare pacchetti specifici.

Funzione Python

Gli argomenti sono parametri delimitati da spazi della funzione. Permette di passare il codice python come argomenti come indicato di seguito.

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

Produrrà quanto segue 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]

Allo stesso modo, puoi utilizzare parole chiave facoltative e il file YAML formato pure.