Distribución de Módulos en ambientes hibridos.

15 views
Skip to first unread message

Leon Garcia

unread,
Apr 9, 2014, 1:13:57 PM4/9/14
to pupp...@googlegroups.com
Hola, tengo la siguiente duda ya que estoy experimentando ciertos problemas.

He creado un par de módulos los cuales quiero distribuir entre mis nodos, el problema es que mis nodos es una combinación de servidores virtuales y físicos,

Ahora uno de los módulos hace un análisis de sus componentes PCI para instalar el software de manejo de raid controller, obviamente esto no va a ir en servidores virtuales.


sites.pp

/server\d+\.empresa\.com$/ {
  include pci_module
  include general_info
}

En mi módulo tengo definido algo similar:

pci_module.pp

class pci_module {

  if $::is_virtual == "true" {
    package ....
    .....
  }
  else {
    fail ("Éste módulo no es para ambientes virtuales")
  }
}



Entonces al momento de hacer el deploy en servidores virtuales con:

puppet agent --test -d

Me tira el error de que el módulo no es para servidores virtuales y ya no continúa con la distribución del segundo módulo.

Mi pregunta, como evitar esto? es mejor usar notify {} en lugar de usar fail ?

Saludos

Guillermo Cordeiro

unread,
Apr 10, 2014, 3:17:56 AM4/10/14
to pupp...@googlegroups.com
Hola

Si lo que quieres es mostrar un mensaje en el lado del cliente usa:
notify {"Éste módulo no es para ambientes virtuales":}

La función fail marca como error los manifiestos y no se aplican.

Un saludo
--
R.U.W.O.R.U.R.O.:
Robotic Upgraded Worker Optimized for
Rational Utility and Relentless Observation
signature.asc

Pablo Wright

unread,
Apr 10, 2014, 10:07:18 AM4/10/14
to pupp...@googlegroups.com
Como dice Guillermo, si la intención es que esos módulos solamente se
apliquen a máquinas virtuales, alcanzaría con tener algo como

class foo {
if $::is_virtual == 'true' {
# acá hace lo que tenga que hacer
}
}

Eso es lo mínimo que necesitarías hacer para obtener esa
funcionalidad. No haría falta una cláusula de "else" a menos que
quieras que aparezca algo en el reporte de las máquinas reales
refiriendose a que no se aplicó la clase por ser "real".

Otro punto a tener en cuenta es cómo se clasifican los nodos.
Estrictamente, uno podría decir que este es un problema que está en el
espacio de la clasificación y no es responsabilidad de los módulos
decidir si se aplican o no. Esto se podría atacar mediante un ENC [0]
que pueda obtener facts y asignar clases acorde a eso.

[0] http://docs.puppetlabs.com/guides/external_nodes.html

Salud!
Pablo D. Wright
Technical Operations - www.edrans.com
Buenos Aires: +54 11 5368 5839 - Ext. 8017 |
Las Vegas: +1 5057183014
Reply all
Reply to author
Forward
0 new messages