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