SaltStack - execução remota
Um dos principais conceitos do Salt é a execução remota. O Salt pode executar comandos em milhares de sistemas em questão de segundos. O Salt usa seu próprio comando para fazer essa funcionalidade. Vamos agora entender os diferentes comandos Salt para execução remota neste capítulo.
Salt Command
O comando Salt permite que o mestre do Salt se comunique com um ou mais Salt minions. A sintaxe básica é a seguinte,
salt '<target>' <module.function> [arguments]
A sintaxe de comando acima consiste nos três componentes principais a seguir.
target - Determina quais sistemas são aplicados pelo comando.
module.function- É um comando. Os comandos consistem em um módulo e uma função.
arguments - Dados adicionais necessários para chamar a função.
Vamos entender cada um dos componentes em detalhes.
Qual é o componente de destino?
Destino é um componente que permite filtrar lacaios (sistema gerenciado) para executar a função. Um comando simples usando o componente de destino é definido abaixo.
salt '*' test.ping
Irá produzir o seguinte output -
minion2:
True
minion1:
True
Aqui, o alvo ‘*’representa todos os sistemas gerenciados. O 'test'aqui está um módulo e pingé uma função. Isso é usado para testar o serviço de ping no sistema remoto. Aprenderemos sobre os diferentes módulos e suas funções nos capítulos subsequentes.
Alvos usando ID (minion)
Você pode enviar um comando para um lacaio específico usando seu idno alvo. Ao invés de usar'*', você pode substituí-lo usando minion id. É definido abaixo.
salt 'minion1’ test.ping
Irá produzir o seguinte output -
minion1:
True
Alvos usando Expressão Regular
Os alvos podem ser filtrados por expressão regular específica. É definido abaixo.
salt -E 'minion[0-9]' test.ping
Irá produzir o seguinte output -
minion2:
True
minion1:
True
Alvos usando lista
Os destinos podem ser especificados explicitamente em uma lista. É definido no seguinte bloco de código.
salt -L 'minion1,minion2' test.ping
Irá produzir o seguinte output -
minion2:
True
minion1:
True
Metas por condição
Os destinos podem ser combinados em um comando, conforme mostrado no bloco de código abaixo.
salt -C 'G@os:Ubuntu and minion* or [email protected].*' test.ping
Irá produzir o seguinte output -
minion1:
True
minion2:
True
Módulo e funções (module.function)
Salt pode executar comandos de shell; atualizar pacotes e distribuir arquivos, etc., em todos os seus sistemas gerenciados simultaneamente. Salt faz essas operações usando módulos. O Salt possui módulos especiais para todas as funcionalidades disponíveis. Vamos entender os diferentes módulos do Salt usando alguns exemplos simples neste capítulo.
Comando Shell
O Salt executa comandos shell remotamente em vários sistemas usando o cmd.runcomando. ocmd é o módulo principal e run é uma das funções disponíveis no cmdmódulo. orun A função permite que qualquer comando do shell seja executado no sistema remoto, conforme mostrado no bloco de código abaixo.
salt '*' cmd.run 'ls -l /etc'
Irá produzir o seguinte 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 do disco
Salt fornece um módulo especial, diskpara obter os detalhes completos do disco do sistema gerenciado. odiskmodule tem um usage função para consultar os detalhes.
salt '*' disk.usage
Irá produzir o seguinte 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 rede
O Salt fornece um módulo separado, rede e função, interfaces dentro do módulo para consultar as informações da interface de rede sobre os sistemas gerenciados.
salt '*' network.interfaces
Irá produzir o seguinte 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 Execução sys.doc
As funções de sal podem ser enviadas para o sys.docmódulo de execução. Isso é usado para obter os detalhes sobre qualquer módulo diretamente da linha de comando. As funções do Salt são autodocumentadas. Toda a documentação da função pode ser recuperada dos lacaios por meio da função sys.doc (), que é definida abaixo.
salt '*' sys.doc
Argumentos para uma chamada de função
Os argumentos são usados para fornecer dados adicionais para a chamada de função. Um exemplo de argumento simples é fornecido abaixo.
salt '*' sys.doc pkg.install
Aqui, o argumento pkg.install é um módulo para instalar pacotes específicos.
Função Python
Os argumentos são parâmetros delimitados por espaço para a função. Ele permite que o código Python seja passado como argumentos conforme fornecido a seguir.
salt '*' cmd.exec_code python 'import sys;print sys.version'
Irá produzir o seguinte 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]
Da mesma forma, você pode usar palavras-chave opcionais e o YAML formato também.