Dieselbe Klasse / Modul / oder was auch immer mehrmals

9

Puppe muss mich hassen. Ich habe das Dokument stundenlang gelesen und kann immer noch Folgendes nicht erreichen:

  • eine Klasse oder ein Modul (oder wie heißt es) mit einer Variablen darin (eine parametrisierte Klasse?);
  • Diese Klasse muss mehrmals in einem einzelnen Host enthalten sein.

Im Pseudocode wäre das:

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

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

Ich fühle mich so dumm, dass es nicht einmal lustig ist. Ich weiß, dass es machbar sein muss . Aber wie? :(

fge
quelle
Sie lesen das? docs.puppetlabs.com/learning/modules2.html . Welche Puppenversion befindet sich auf Ihrem Server / Client?
Zoredache
@ Zoredache 2.6.12 auf dem Server und den Clients
fge

Antworten:

13

Sie können eine parametrisierte Klasse nur einmal verwenden. Wenn Sie vorhaben, einen Knoten mehrmals mit einer Funktion zu treffen, während Sie die Datendefinitionen variieren, sind Sie hier richtig.

Beispiel

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
quelle
Ausgezeichnet. fwiw #puppet on freenode und die Mailinglisten sind sehr aktiv und haben solche Dinge ausführlich behandelt. Wenn Sie gerade erst mit Puppet anfangen, würde ich vorschlagen, beide Ressourcen zur Hand zu haben.
Kashani