Una misma clase / módulo / o cualquier cosa múltiples veces

9

La marioneta debe odiarme. He estado leyendo el documento durante horas y horas y todavía no puedo lograr lo siguiente:

  • una clase o módulo (o cómo se llama) con una variable (¿una clase parametrizada?);
  • esta clase se incluirá varias veces en un solo host.

En pseudocódigo, eso sería:

# The class
classorwhatever myclass ($value) {
    notify { "$value world" }
}

# In the node definition
node whatever {
    myclass("Hello")
    myclass("Goodbye")
}

Me siento tan estúpido que ni siquiera es gracioso. Sé que debe ser factible. ¿Pero cómo? :(

fge
fuente
¿Estás leyendo esto? docs.puppetlabs.com/learning/modules2.html . ¿Qué versión de marioneta hay en su servidor / cliente?
Zoredache
@Zoredache 2.6.12 tanto en el servidor como en los clientes
fge

Respuestas:

13

Solo puede usar una clase parametrizada una vez. Si planea golpear un nodo varias veces con una función mientras varía, las definiciones de datos son el camino a seguir.

ejemplo

class apache ( $module ) {
  if module = ssl then and so on
}

define apache::vhost ($priority=99) {
  file { "apache/vhost.d/${name}":
    content => template("apache/vhosts/$name.erb"),
  }
}

node webserver {
  class { 'apache': module => 'ssl', }
  apache::vhost { 'www': priority => 00, }
  apache::vhost { 'test': priority => 99, } 
}
kashani
fuente
Excelente. fwiw #puppet en freenode y las listas de correo son muy activas y han cubierto cosas como esta en profundidad. Si recién estás comenzando con Puppet, te sugiero que tengas ambos recursos a mano.
Kashani