Utilizar "External Facts" en Puppet a partir de la versión 1.7 de Facter | Algo de Linux

miércoles, 2 de abril de 2014

Utilizar "External Facts" en Puppet a partir de la versión 1.7 de Facter

Para aquellos que no lo conocen, podemos decir que Facter es una librería multiplataforma que sirve para obtener información acerca de los nodos gestionados mediante Puppet.

Facter incorpora de serie un conjunto de facts y nos permite añadir nuevos facts creados por nosotros.  El problema es que, aunque sea más o menos sencillo crear pequeños facts, sobre todo basándonos en el shell de linux, es necesario escribir dichos facts en Ruby.

La versión 1.7 de Facter incorpora una importante colección de nuevos facts, pero, además, nos ofrece la posibilidad de crear facts en los que definamos "variables" de una manera sencilla.

Para utilizar estos "external facts", crearemos un directorio, si no lo tenemos creado aún:

# mkdir /etc/facter/facts.d

En este directorio podemos crear:
  • Ficheros de texto (.txt)
  • Ficheros YAML (.yaml)
  • Ficheros JSON (.json)
Dependiendo del tipo de fichero que creemos, tendremos que usar una sintaxis predeterminada. 

Por ejemplo, si decidimos usar un fichero de texto para almacenar facts, utilizaremos la siguiente sintaxis:

# /etc/facter/facts.d# cat config.txt 
uso=servidor
aula=terminales

Facter examinará los ficheros almacenados dentro del directorio /etc/facter/facts.d y convertirá los pares que lea de cada fichero en variables facter.

Si ahora ejecutamos:

# facter | grep -e uso -e aula

Comprobaremos que existen los dos nuevos facts:

aula => terminales
uso => servidor

De este modo se hace muy sencillo definir nuevos facter en los que asignamos valor a una variable.

Si en lugar de definir los facts en un fichero de texto, queréis hacerlo en ficheros JSON, la sintaxis es diferente:

# cat /etc/facter/facts.d/config.json 

 "uso": "servidor", 
 "aula": "terminales" 
}

Y si quisiéramos definir los facts en un fichero YAML, ésta sería la sintaxis:

# cat /etc/facter/facts.d/config.yaml

 uso: servidor
 aula: terminales


}

A gusto del consumidor...

Publicado por primera vez en http://enavas.blogspot.com.es