【发布时间】:2014-01-05 13:40:38
【问题描述】:
我们已经可以在角色或节点对象中覆盖 Cookbook 属性。食谱呢?我们可以在不使用 Cookbook Wrapper 的情况下使用 Cookbook 中提供的资源 (LWRP) 吗?
例如,我想安装带有一些插件的 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 中,只是为了将此功能添加到角色或节点?这似乎有点矫枉过正。
【问题讨论】:
-
应用程序食谱模式是一种新兴的厨师最佳实践。好的社区食谱的编写方式可以使用节点属性自定义其行为,并且它们可能提供 LWRP,使您的食谱更易于编写。使用像 Berkshelf 这样的工具来管理您的依赖项,编写应用程序说明书成为一种乐趣,而不是一件苦差事:-)
-
@马克。谢谢(你的)信息。我已经在使用 Berkshelf 和 Application Cookbooks。不过,在某些情况下,这似乎有点矫枉过正,因为当我们只需要使用一个不属于现有配方的资源调用时。我想我已经想到了 ruby mixin。
-
我将社区食谱视为库(实际上它被称为库模式),并使用像 Maven 这样的 berkshelf 来管理这些第 3 方依赖项。我的“代码”是用于描述和实现我想要的基础设施的应用程序说明书,我列出了我想要创建的资源。这就是利用 LWRP 派上用场的地方。使您的说明书声明性更具可读性。