Один и тот же класс / модуль / или что угодно несколько раз

9

Кукольный должен ненавидеть меня. Я часами читаю документ и до сих пор не могу добиться следующего:

  • класс или модуль (или как он называется) с переменной в нем (параметризованный класс?);
  • этот класс должен быть включен несколько раз на одном хосте.

В псевдокоде это будет:

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

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

Я чувствую себя настолько глупо, что это даже не смешно. Я знаю, что это должно быть выполнимо. Но как? :(

FGE
источник
Вы читаете это? docs.puppetlabs.com/learning/modules2.html . Какой вариант Puppet находится на вашем сервере / клиенте?
Зоредаче
@Zoredache 2.6.12 как на сервере, так и на клиентах
fge

Ответы:

13

Вы можете использовать параметризованный класс только один раз. Если вы планируете поразить узел несколько раз с помощью функции, варьируя определения данных, это путь.

пример

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, } 
}
Кашани
источник
Отлично. fwiw #puppet на freenode и списки рассылки очень активны и подробно рассказывают о подобных вещах. Если вы только начинаете работать с Puppet, я бы посоветовал держать оба этих ресурса под рукой.
Кашани