同一个类/模块/或其他任何东西多次出现

同一个类/模块/或其他任何东西多次出现

Puppet 一定恨我。我已经连续几个小时阅读文档,但仍然无法实现以下目标:

  • 一个其中包含变量的类或模块(或它叫什么)(参数化类?);
  • 此类可以在单个主机中多次包含。

用伪代码来说,就是:

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

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

我觉得自己太蠢了,一点也不好笑。我知道必须可行。但怎么做呢?:(

答案1

您只能使用一次参数化类。如果您计划使用函数多次访问某个节点,同时改变数据定义,那么这种方法是可行的。

例子

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, } 
}

相关内容