在不使用应用程序指南的情况下自定义菜谱

时间:2014-01-05 04:04:57

标签: chef chef-recipe

我们已经可以覆盖角色或节点对象中的Cookbook属性。食谱怎么样?我们可以使用Cookbook中提供的资源(LWRP)而无需使用Cookbook Wrapper吗?

例如,我想用一些插件安装Jenkins。 Jenkins cookbook表示有一个可以使用的属性

node['jenkins']['server']['plugins']

但仅限于允许插件名称和版本。 Cookbook中还有Resource documented似乎可以做我想要的。例如:

jenkins_plugin 'custom_plugin' do
  action :install
  version '0.3'
  url 'http://myrepo/jenkins/plugins/0.3/custom_plugin.hpi'
end

我是否需要创建一个完整的Wrapper Cookbook并将此代码放在/recipes/default.rb中,只是为了将此功能添加到角色或节点?这似乎有点矫枉过正。

1 个答案:

答案 0 :(得分:3)

使用任何社区食谱时,您应该始终深入阅读食谱。您会注意到jenkins::server配方允许您在该哈希中设置URL以及名称和版本。

在这种特殊情况下,您可以覆盖如下属性:

node.override['jenkins']['server']['plugins'] = [
  {
    'name' => 'custom_plugin', 
    'version' => '0.3', 
    'url' => 'http://myrepo/jenkins/plugins/0.3/custom_plugin.hpi'
  }]

在一般情况下,如果这个食谱不灵活,那么你必须创建一本食谱,这取决于另一本食谱(你不必执行食谱,只需要依赖它) ,并在您自己的食谱中使用LWRP定义资源。