我认为这是一个非常愚蠢的事情,我没有做但似乎无法找到答案。
我正在使用带有默认的exact32流浪盒的厨师
编辑:为了澄清,我问是否有某个地方我可以设置平台,以便烹饪书和做出依赖性决定。由于
答案 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。