【发布时间】:2017-05-23 12:20:09
【问题描述】:
我是 puppet 的新手,因此我们将不胜感激。我正在尝试将静态数据传递到 Puppet 类中的变量apache_version,具体取决于操作系统版本。这个变量稍后将在.erb模板文件中使用,以根据版本配置apache。现在我的班级看起来像这样:
class some_class_name () {
case $::operatingsystem {
'RedHat' : {
case $::operatingsystemrelease {
/^7\..*/ : { }
/^6\..*/ : { }
}
}
}
}
如何在{} 括号内定义这个变量?至于.erb文件,应该这样使用:
<%- if @apache_version >= '2.4' -%>
set something
<%- else -%>
set something else
<%- end -%>
我的目标是这样的:
class some_class_name () {
case $::operatingsystem {
'RedHat' : {
case $::operatingsystemrelease {
/^7\..*/ : { $apache_version = '2.4' }
/^6\..*/ : { $apache_version = '2.2' }
}
}
}
}
但它不起作用。
【问题讨论】:
-
对我来说很好。
facter operatingsystem和facter operatingsystemrelease究竟输出了什么?你包括some_class_name吗?你如何检查$apache_version的值?或许加notify { "Version: ${apache_version}": }。 -
facter operatingsystem给出RedHatfacter operatingsystemrelease给出7.2(至少在我现在正在工作的系统上)some_class_name正确包含在init.pp文件中。至于检查 - 我不会在任何地方检查它。我是不是该?它不应该像这样工作吗,一旦我将版本分配给变量,它应该在.rb文件中使用? -
如果
template()调用在同一范围内,则该变量可以在 ERB 模板中使用,但显示的清单没有 template() 调用,因此很难说这是否是正确。 -
仅供参考,没有理由用
.*结束正则表达式