Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在puppet类中指定变量_Puppet_Erb - Fatal编程技术网

在puppet类中指定变量

在puppet类中指定变量,puppet,erb,Puppet,Erb,我是木偶新手,所以任何帮助都将不胜感激。我试图将静态数据传递到Puppet类中的变量apache\u version,具体取决于操作系统的发布版本。此变量稍后将在.erb模板文件中使用,以根据版本配置apache。现在,我的班级是这样的: class some_class_name () { case $::operatingsystem { 'RedHat' : { case $::operatingsystemrelease { /^7\..*/ :

我是木偶新手,所以任何帮助都将不胜感激。我试图将静态数据传递到Puppet类中的变量
apache\u version
,具体取决于操作系统的发布版本。此变量稍后将在
.erb
模板文件中使用,以根据版本配置apache。现在,我的班级是这样的:

class some_class_name () {
  case $::operatingsystem {
    'RedHat' : {
      case $::operatingsystemrelease {
        /^7\..*/ : { }
        /^6\..*/ : { }
      }
    }
  }
}
<%- 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' }
      }
    }
  }
}
如何在
{}
括号内定义此变量?对于
.erb
文件,应如下使用:

class some_class_name () {
  case $::operatingsystem {
    'RedHat' : {
      case $::operatingsystemrelease {
        /^7\..*/ : { }
        /^6\..*/ : { }
      }
    }
  }
}
<%- 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' }
      }
    }
  }
}

但它不起作用

好的,我已经设法解决了这个问题。现在我正在使用:

if $::operatingsystemrelease =~ /^7\..*/ {
    $apache_version = '2.4'
  } else {
    $apache_version = '2.2'
  }

params.pp
文件中。通过此操作,一切都已正确配置。

最好在此处使用
$::operatingsystemmajrelease
事实:

  if $::operatingsystemmajrelease == 7 {
    $apache_version = '2.4'
  } else {
    $apache_version = '2.2'
  }
我还认为这是一个很好的木偶选择器用例:

$apache_version = $::operatingsystemmajrelease ? { 7 => '2.4', default => '2.2' }

对我来说很好。
facter operatingsystem
facter operatingsystem发布的确切输出是什么?您是否包含了一些类名称?如何检查
$apache_version
的值?添加
notify{“Version:${apache_Version}:}
也许。
facter operatingsystem
给出
RedHat
facter operatingsystemrelease
给出
7.2
(至少在我现在正在工作的系统上)
一些类名称正确地包含在
init.pp
文件中。至于检查,我不会在任何地方检查。我应该吗?它不是应该这样工作吗,一旦我将version分配给变量,它应该在
.rb
文件中使用吗?如果
template()
调用在同一范围内,但所显示的清单没有模板(),那么该变量可以在ERB模板中使用调用,因此很难说这是否正确。仅供参考,没有理由以
*
结尾正则表达式