SaltStack - Ejecución remota
Uno de los conceptos centrales de Salt es la ejecución remota. Salt puede ejecutar comandos en miles de sistemas en cuestión de segundos. Salt usa su propio comando para hacer esta funcionalidad. Entendamos ahora los diferentes comandos de Salt para ejecución remota en el capítulo.
Comando de sal
El comando Salt permite que el maestro Salt se comunique con uno o más Salt minions. La sintaxis básica es la siguiente,
salt '<target>' <module.function> [arguments]
La sintaxis de comando anterior consta de los siguientes tres componentes principales.
target - Determina qué sistemas aplica el comando.
module.function- Es un comando. Los comandos constan de un módulo y una función.
arguments - Datos adicionales necesarios para llamar a la función.
Entendamos cada uno de los componentes en detalle.
¿Qué es el componente de destino?
Target es un componente que le permite filtrar minions (sistema administrado) para ejecutar la función. A continuación se define un comando simple que utiliza el componente de destino.
salt '*' test.ping
Producirá lo siguiente output -
minion2:
True
minion1:
True
Aquí, el objetivo ‘*’representa todos los sistemas gestionados. Los 'test'aquí hay un módulo y pinges una función. Esto se usa para probar el servicio de ping en el sistema remoto. Conoceremos los diferentes módulos y sus funciones en capítulos posteriores.
Objetivos que usan ID (minion)
Puedes enviar un comando a un minion específico usando su iden el objetivo. En lugar de usar'*', puedes reemplazarlo usando minion id. Se define a continuación.
salt 'minion1’ test.ping
Producirá lo siguiente output -
minion1:
True
Objetivos que utilizan expresiones regulares
Los destinos se pueden filtrar por expresiones regulares específicas. Se define a continuación.
salt -E 'minion[0-9]' test.ping
Producirá lo siguiente output -
minion2:
True
minion1:
True
Objetivos que utilizan la lista
Los destinos se pueden especificar explícitamente en una lista. Se define en el siguiente bloque de código.
salt -L 'minion1,minion2' test.ping
Producirá lo siguiente output -
minion2:
True
minion1:
True
Objetivos por condición
Los objetivos se pueden combinar en un comando como se muestra en el bloque de código a continuación.
salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping
Producirá lo siguiente output -
minion1:
True
minion2:
True
Módulo y funciones (módulo.función)
Salt puede ejecutar comandos de shell; actualizar paquetes y distribuir archivos, etc., en todos sus sistemas administrados simultáneamente. Salt realiza estas operaciones mediante módulos. Salt dispone de módulos especiales para todas las funcionalidades disponibles. Entendamos los diferentes módulos de Salt usando un ejemplo simple en este capítulo.
Comando de Shell
Salt ejecuta comandos de shell de forma remota en varios sistemas utilizando el cmd.runmando. loscmd es el módulo principal y run es una de las funciones disponibles en el cmdmódulo. losrun La función permite ejecutar cualquier comando de shell en el sistema remoto como se muestra en el bloque de código a continuación.
salt '*' cmd.run 'ls -l /etc'
Producirá lo siguiente 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
……………
……………
Mostrar uso de disco
Salt proporciona un módulo especial, diskpara obtener los detalles completos del disco del sistema administrado. losdiskmodule tiene un usage función para consultar los detalles.
salt '*' disk.usage
Producirá lo siguiente 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
Interfaces de red
Salt proporciona un módulo, una red y una función independientes, interfaces dentro del módulo para consultar la información de la interfaz de red sobre los sistemas administrados.
salt '*' network.interfaces
Producirá lo siguiente 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
Módulo de ejecución sys.doc
Las funciones de sal se pueden enviar al sys.docmódulo de ejecución. Se utiliza para obtener los detalles de cualquier módulo directamente desde la línea de comandos. Las funciones de Salt se autodocumentan. Toda la documentación de la función se puede recuperar de los minions a través de la función sys.doc (), que se define a continuación.
salt '*' sys.doc
Argumentos para una llamada a función
Los argumentos se utilizan para proporcionar datos adicionales para la llamada a la función. A continuación se ofrece un ejemplo de argumento sencillo.
salt '*' sys.doc pkg.install
Aquí, el argumento pkg.install es un módulo para instalar paquetes específicos.
Función Python
Los argumentos son parámetros de la función delimitados por espacios. Permite que el código de Python se pase como argumentos como se indica a continuación.
salt '*' cmd.exec_code python 'import sys;print sys.version'
Producirá lo siguiente 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]
Del mismo modo, puede utilizar palabras clave opcionales y la YAML formato también.