Salt Instalando master e minion em debian squeeze

Vou abordar como instalar rapidamente o salt-master e o salt-minion em debian squeeze, em seguida vou mostrar como executar comandos remotamente.

Instalando salt-master em debian squeeze

Habilite o repositório backports e atualize os índices

root@saltmaster:~# aptitude update

Instale o salt-master

root@saltmaster:~# aptitude install salt-master

Veja o seu endereço IPv4

root@puppetmaster:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:12:bb:0f  
          inet addr:192.168.17.130  Bcast:192.168.17.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe12:bb0f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:38987 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20024 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:28844823 (27.5 MiB)  TX bytes:2181661 (2.0 MiB)

Edite o aquivo /etc/salt/master e vá até a linha abaixo

#interface 0.0.0.0

Modifique a linha descomentando e inserindo o IP de sua interface

interface: 192.168.17.130

Reinicie o salt master

root@saltmaster:~# /etc/init.d/salt-master restart

Ótimo, master pronto e instalado, agora vamos para o minion.

Instalando salt-minion em debian squeeze

No minion que será gerenciado pelo salt-master, habilite o repositório backports e instale o pacote através do comando abaixo.

root@saltminion:~# aptitude install salt-minion

Após instalar edite o arquivo /etc/salt/minion vá aré a linha abaixo

#master: salt

Modifique a linha descomentando e inserindo o IP do master

master: 192.168.17.130

Reinicie o salt

root@saltminion:~# /etc/init.d/salt-minion restart

Autorizando o minion a usar o master

Agora vá ao salt master e digite

root@saltmaster:~# salt-key -L
Unaccepted Keys:
saltminion.hacklab
Accepted Keys:
Rejected:

Veja que o minion saltminion precisa ser autorizado, use o comando abaixo para autorizar o uso do salt-master.

root@saltmaster:~# salt-key -a saltminion.hacklab
Key for salminion.hacklab accepted.

Executando comandos remotamente a partir do master

Vamos pedir para o salt testar se os minions estão ligados

root@saltmaster:~# salt '*' test.ping
 saltminion.hacklab: True

Veja que usamos * para orientar o teste em todos os minions

Para executar em minions de um domínio use: '*.dominio'
Para executar em um minion específico use: 'minion.dominio'

Vamos executar o comando uname em todos os nodes

root@saltmaster:~# salt '*' cmd.run 'uname -a'
saltminion.hacklab: Linux saltminion.hacklab 2.6.32-5-amd64 #1 SMP Sat May 5     01:12:59 UTC 2012 x86_64 GNU/Linux

Executando comando free

root@saltmaster:~# salt '*' cmd.run 'free'
saltminion.hacklab:              total       used       free     shared    buffers     cached
saltminion.hacklab: Mem:        114048     110828       3220          0       1500      62180
saltminion.hacklab: -/+ buffers/cache:      47148      66900
saltminion.hacklab: Swap:       217080       9608     207472

Executando comando vmstat

root@saltmaster:~# salt '*' cmd.run 'vmstat'
saltminion.hacklab: procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
saltminion.hacklab:  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
saltminion.hacklab:  0  0   9608   3288   1500  62192    1    1    11     5    9    8  0  0 100  0

Executando código em python

root@saltmaster:~#salt '*' cmd.exec_code python 'import sys; print sys.version'
{'saltminion.hacklab': '2.6.6 (r266:84292, Dec 26 2010, 22:31:48) \n[GCC 4.4.5]'}

Executando código em bash

root@saltmaster:~# salt '*' cmd.exec_code bash 'if [ -e /etc/resolv.conf ];then echo true;else echo false;fi'
{'saltminion.hacklab': 'true'}

Veja que seu funcionamento é bastante simples e eficiente, eu gostei particularmente dos recursos cmd.exec_code e cmd.run.

Sigo estudando e compartilhando o que for aprendendo.

[s]
Guto