¿Os leísteis ya la entrada sobre SaltStack de primeros pasos con Salt? Si no lo habéis hecho, antes de seguir, este es un buen momento para hacerlo aquí.
En esa primera entrada explicábamos como dar de alta un nuevo equipo en el servidor, aceptar su clave y hacer una primera prueba de concepto. Hoy vamos a ver un nuevo punto en la arquitectura de SaltStack: los grains.
Los grains son los datos del sistema del cliente SaltStack. Estos datos son los que nos indican el tipo de sistema operativo, el dominio al que pertenece, la IP, RAM, versión y un largo etc.
Para obtener la salida de grains, podemos hacerlo tal que así,
shell> salt '*' grains.items biosreleasedate: 01/01/2006 biosversion: Bochs cpu_flags: fpu de pse tsc msr pae mce cx8 apic sep mtrr... cpu_model: QEMU Virtual CPU version 1.1.2 cpuarch: x86_64 defaultencoding: UTF-8 defaultlanguage: en_GB domain: mydomain.local fqdn: test.server.local gpus: {'model': 'GD 5446', 'vendor': 'unknown'} host: sei id: sei.mydomain.local ip_interfaces: {'lo': ['127.0.0.1'], 'eth0': ['10.1.100.15']} ipv4: 127.0.0.1 10.1.100.15 kernel: Linux kernelrelease: 3.9-1-amd64 localhost: sei lsb_distrib_codename: jessie lsb_distrib_description: Debian GNU/Linux testing (jessie) lsb_distrib_id: Debian lsb_distrib_os: GNU/Linux lsb_distrib_release: testing manufacturer: Bochs master: salt mem_total: 2012 nodename: sei num_cpus: 1 num_gpus: 1 os: Debian os_family: Debian oscodename: jessie osfullname: Debian osrelease: testing path: /sbin:/usr/sbin:/bin:/usr/bin productname: Bochs ps: ps -efH pythonpath: /usr/bin /usr/lib/python2.7 /usr/lib/python2.7/plat-x86_64-linux-gnu /usr/lib/python2.7/lib-tk /usr/lib/python2.7/lib-old /usr/lib/python2.7/lib-dynload /usr/local/lib/python2.7/dist-packages /usr/lib/python2.7/dist-packages /usr/lib/pymodules/python2.7 pythonversion: 2.7.5.final.0 saltpath: /usr/lib/python2.7/dist-packages/salt saltversion: 0.16.2 serialnumber: Not Specified bash: /bin/bash
Estos datos los podemos emplear dentro de la lógica de Salt, como veremos un poco más adelante y también para diferenciar los equipos en los que queramos ejecutar algo.
Si os acordais, para lanzar una prueba, hacíamos los siguiente
shell> salt '*' test.ping
Con ello, ejecutábamos la función test.ping en todos los equipos que estuviesen aceptados en el servidor. Usando grains, podemos hacer una selección de los mismos sobre la que ejecutar los comandos. Para ello tenemos la opción -G, que la seguimos de la opción por lo que deseamos diferenciar.
shell> salt -G 'os:Debian' test.ping shell> salt -G 'cpuarch:x86_64' test.ping
Como podéis observar, en la primera se ejecuta el comando sobre todos aquellos equipos con sistema operativo Debian, mientras que en el segundo ejemplo, sobre todos aquellos equipos de arquitectura x86_64.
La entrada SaltStack: Uso de grains la puedes leer en Puppet Linux.
La entrada SaltStack: Uso de grains la puedes leer en Puppet Linux.