Puppet 如何使用模板或其他通用方法改进类函数

Puppet 如何使用模板或其他通用方法改进类函数,puppet,configuration-management,system-administration,puppetlabs-apache,Puppet,Configuration Management,System Administration,Puppetlabs Apache,我有一个类函数,它使用puppet中的package方法下载包 class package { define install( $dependence=File[$dummy_dependence_file]) { package { $name: ensure => "installed", require => $dependence, } } } 我现在在init.pp中使用它,就像这样 # install d

我有一个类函数,它使用puppet中的package方法下载包

class package {

  define install( $dependence=File[$dummy_dependence_file])
 {
      package { $name:
            ensure => "installed",
        require => $dependence,
  }
 }
}
我现在在init.pp中使用它,就像这样

# install dependencies
$dependence_list = ['glibc.i686','wget','gcc']
#
# ==Actions
# Install glibc, gcc, wget dependency for running sybase
# 
# ==Requires
# * http proxy to be setup to get around jpm proxy
package::install { $dependence_list:
      dependence => File[ $http_setup_name ],
      }
我希望这个方法更加通用。是否可以不使用依赖项数组(我每次都需要编辑init.pp)。要使用模板并从文件中读取每个依赖项?或者任何其他通用方法都可以


举个例子就好了。

您应该能够简单地在包中设置需求,并将数组传递给包:

 $my_packages = ['apache2', 'curl', 'wget']
 $my_dependencies = [File['a'], File['b'], User['tester']]

 package { $my_packages:
   ensure  => installed,
   require => $my_dependencies,
 }
使用这种类型的软件包应该足以满足您的需要

但是,如果要从文件中读取依赖项列表,可以使用“模板”功能。即

 $my_dependencies = template('modulepath/templates/dependency_list.erb')
最后是dependency_list.erb,如下所示:

[File['a'], File['b'], User['tester']]
这就是它真正的意义所在


有关更多信息,请参见

这与我上面的功能相同。很抱歉,我添加了一些有关立即使用模板的信息。为了完整性,您可以添加dependency_list.erb的示例吗?:-D