我们已经可以覆盖角色或节点对象中的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中,只是为了将此功能添加到角色或节点?这似乎有点矫枉过正。
答案 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定义资源。