Une même classe / module / ou n'importe quoi plusieurs fois

9

La marionnette doit me détester. J'ai lu le document pendant des heures et je n'arrive toujours pas à atteindre les objectifs suivants:

  • une classe ou un module (ou comment s'appelle-t-il) avec une variable (une classe paramétrée?);
  • cette classe doit être incluse plusieurs fois dans un seul hôte.

En pseudo-code, ce serait:

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

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

Je me sens tellement stupide que ce n'est même pas drôle. Je sais que cela doit être faisable. Mais comment? :(

fge
la source
Tu lis ça? docs.puppetlabs.com/learning/modules2.html . Quelle version de marionnette se trouve sur votre serveur / client?
Zoredache
@Zoredache 2.6.12 sur le serveur et les clients
fge

Réponses:

13

Vous ne pouvez utiliser une classe paramétrée qu'une seule fois. Si vous prévoyez de frapper un nœud plusieurs fois avec une fonction tout en faisant varier les définitions de données, c'est la voie à suivre.

exemple

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
la source
Excellent. fwiw #puppet sur freenode et les listes de diffusion sont très actives et ont couvert des sujets comme celui-ci en profondeur. Si vous débutez avec Puppet, je vous suggère de garder ces deux ressources à portée de main.
kashani