厨师食谱要求Linux盒子的Windows和Mac依赖项

时间:2014-03-15 08:52:39

标签: chef vagrant

我认为这是一个非常愚蠢的事情,我没有做但似乎无法找到答案。

我正在使用带有默认的exact32流浪盒的厨师

编辑:为了澄清,我问是否有某个地方我可以设置平台,以便烹饪书和做出依赖性决定。

由于

2 个答案:

答案 0 :(得分:2)

Chef不允许依赖属性的cookbook依赖项(目前主厨11)。将加载烹饪书,但不会执行。 IIRC对此的支持在主厨12的愿望清单上。

答案 1 :(得分:1)

斯蒂芬的回答是正确的,但有一些方法可以解决这个问题。

在许多社区食谱中,您会看到这种模式:

default['cookbook']['attribute'] = case node['platform_family']
                                   when 'debian'
                                     'foo'
                                   when 'rhel'
                                     'bar'
                                   end

但这很快变得无法管理,逻辑很难遵循。此外,添加对其他平台的支持变得很麻烦。

另一种选择是"每个属性文件一个平台"图案。值得注意的是,正如斯蒂芬所说,无论平台如何,每个文件都被加载,因此命名约定实际上与其内容无关;对于人类而言,它比厨师更多。

cookbook
  |_ attributes
    |_ mac_os_x.rb
    |_ ubuntu.rb
    |_ <platform>.rb

在每个属性文件的非常顶部,添加如下内容:

return unless platform_family?('<platform>')

这将阻止Chef读取该文件的其余部分。最终的结果是它出现了#34; Chef通过平台支持不同的属性,但你真的只是使用Ruby。