Definición de nodos en Puppet y problemas asociados | Algo de Linux

jueves, 8 de octubre de 2015

Definición de nodos en Puppet y problemas asociados

Ya ha habido varios compañeros que me han comentado el mismo problema: "Tengo bien configurado el cliente puppet, si hago un puppet agent --test veo que puppet se ejecuta correctamente, pero no se aplican las clases que tengo definidas para este cliente."

En este caso, el problema suele estar en que tenéis varias definiciones aplicables para un mismo nodo y Puppet sólo obtiene los contenidos de una única definición de nodo. 

Veamos un ejemplo típico: Supongamos que tenéis un nodo default cuyos contenidos se aplican a todos los nodos y definís un nodo concreto. Por ejemplo: node a02-pro { } 

Pues bien, una vez que hayáis definido expresamente el nodo a02-pro, a dicho nodo se le aplicarán los contenidos definidos en dicho nodo y no se le aplicarán los contenidos de default, a menos que hagáis que herede los contenidos del nodo default. ¿Por qué? Pues simplemente porque Puppet sólo obtiene los contenidos de una única definición de nodo.

Para decidir qué definición debe usar para un nodo, Puppet realiza las siguientes comprobaciones en orden:
  1. Si existe una definición de nodo con el nombre exacto del nodo, Puppet la utiliza.
  2. Si hay una expresión regular que coincide con el nombre del nodo, Puppet la usará. Pero, si hay varias expresiones regulares que coincidan, utilizará una de ellas sin garantizar cual.
  3. Si el nombre del nodo tiene forma de nombre completamente cualificado (fqdn), puppet extraerá la porción final del dominio y comenzará con el paso uno.
  4. En caso de que no se cumpla ninguno de los casos anteriores, Puppet utilizará el nodo default.
Publicado por primera vez en http://enavas.blogspot.com.es