Uma mesma classe / módulo / ou qualquer que seja a doença várias vezes

9

Fantoche deve me odiar. Eu tenho lido o documento por horas a fio e ainda não consigo obter o seguinte:

  • uma classe ou módulo (ou como é chamado) com uma variável (uma classe parametrizada?);
  • essa classe seja incluída várias vezes em um único host.

No pseudo-código, isso seria:

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

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

Eu me sinto tão estúpido que nem é engraçado. Eu sei que deve ser factível. Mas como? :(

fge
fonte
Você está lendo isso? docs.puppetlabs.com/learning/modules2.html . Qual versão do fantoche está no seu servidor / cliente?
Zoredache
@Zoredache 2.6.12 no servidor e nos clientes
fge

Respostas:

13

Você só pode usar uma classe parametrizada uma vez. Se você planeja acessar um nó várias vezes com uma função enquanto varia as definições de dados, é o caminho a percorrer.

exemplo

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
fonte
Excelente. fwiw #puppet on freenode e as listas de mensagens são muito ativas e cobriram coisas como essa em profundidade. Se você está apenas começando com o Puppet, sugiro manter esses dois recursos à mão.
Kashani