Lo primero de todo, debemos de tener claro que la comunicación entre cliente y servidor siempre viaja cifrada. El sistema usado es de clave pública--privada, muy similar a SSH, así que el cliente va a generar una clave y tendrá que compartirla con el servidor. Éste luego deberá aceptarla (o no) antes de comenzar a intercambiar datos.
Siempre desde la
shell del servidor de Salt, podemos ejecutar,
shell> salt-key -L
Accepted Keys:
Unaccepted Keys:
salt-client-1.local.net
Rejected Keys:
Para ver un listado de los servidores que ya tenemos aceptados dentro del master y también los que están rechazados. Como veis el nombre del equipo es siempre el que se configura en el minion, y excepto que lo cambiemos manualmente, por defecto cogerá el nombre del equipo, con dominio.
Si tenemos algún equipo pendiente de aceptar, lo que tendremos que ejecutar es,
shell> salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
salt-client-2.local.net
Proceed? [n/Y] Y
Key for minion salt-client-2.local.net accepted.
shell> salt-key -L
Accepted Keys:
salt-client-1.local.net
salt-client-2.local.net
Unaccepted Keys:
Rejected Keys:
Ahora que ya los tenemos aceptados, ya podemos comenzar a trabajar con los clientes de forma sencilla. Lo más básico, ver que un equipo responde a ping,
shell> salt 'salt-client-1.local.net' test.ping
salt-client-1.local.net:
True
O que todos responden a ping,
shell> salt '*' test.ping
salt-client-1.local.net:
True
salt-client-2.local.net:
True
Aunque también se pueden hacer cosas más concretas e interesantes como,
shell> salt '*' cmd.run 'cat /etc/debian_version'
salt-client-2.local.net:
7.1
salt-client-1.local.net:
7.0
U ordenarle que hagan un ping a Google y que nos devuelva el resultado,
shell> salt -L 'salt-client-*' network.ping '8.8.8.8'
salt-client-1.local.net:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=45 time=53.1 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=45 time=48.4 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=45 time=50.4 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=45 time=48.2 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 48.211/50.052/53.184/2.019 ms
salt-client-2.local.net:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=45 time=51.1 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=45 time=48.3 ms
64 bytes from 8.8.8.8: icmp_req=3 ttl=45 time=48.3 ms
64 bytes from 8.8.8.8: icmp_req=4 ttl=45 time=48.1 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 48.162/48.991/51.149/1.257 ms
Como creo que vais observando desde la shell del servidor de SaltStack siempre se ejecuta el comando salt, seguido de
- '*', 'salt-client-1'
Es el nombre del cliente al que queremos conectar.
Puede usar comodines o expresiones regulares si nos interesa conectar a uno o más de uno. También se permite conecta a uno o varios equipos según arquitectura, sistema operativo, etc.
- cmd.run, test.ping
Es el comando que vamos a ejecutar. Por defecto SaltStack tiene muchos ya definidos, los cuales podemos y debemos usar.
- '8.8.8.8'
Son los parámetros opcionales que se le pueden pasar a un comando.
Como primera aproximación no está mal. En próximas entradas iremos viendo cómo hacer más cosillas con SaltStack, cosas que realmente ya será de interés y aportarán algo a la administración de sistemas.
Leer más