相同的班级/模块/性病多次


9

木偶一定恨我。我已经阅读了数小时的文档,但仍然无法实现以下目标:

  • 一个其中带有变量的类或模块(或称为什么)(参数化类?);
  • 此类应在单个主机中多次包含。

用伪代码,它将是:

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

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

我觉得自己很愚蠢,甚至都不有趣。我知道这一定是可行的。但是如何?:(


您正在阅读吗?docs.puppetlabs.com/learning/modules2.html。您的服务器/客户端上的木偶是什么版本?
Zoredache

服务器和客户端上的@Zoredache 2.6.12
fge2012年

Answers:


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

优秀的。在freenode上的fwiw #puppet和邮件列表非常活跃,并且深入地介绍了此类内容。如果您只是开始使用Puppet,我建议您将这两个资源都放在手边。
kashani 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.