【问题标题】:How can I improve class function using a template or other generic method如何使用模板或其他通用方法改进类功能
【发布时间】:2013-07-19 08:37:55
【问题描述】:

我有一个类函数,使用 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 。使用模板并从文件中读取每个依赖项?或者任何其他通用方法都可以......

举个例子就好了。

【问题讨论】:

    标签: puppet configuration-management system-administration puppetlabs-apache


    【解决方案1】:

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

     $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']]
    

    这就是它的全部内容!

    更多信息可以查看http://docs.puppetlabs.com/guides/templating.html

    【讨论】:

    • 这与我上面的功能相同。
    • 对不起,我现在也添加了一些关于使用模板的信息
    • 你能添加一个dependency_list.erb的例子来保证完整性吗? :-D
    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2021-05-04
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多