是否可以在不添加配方的情况下使用include_recipe进行metadata.rb

时间:2017-03-03 01:16:46

标签: chef cookbook recipe

我有一本需要为Windows和RHEL盒子安装软件的食谱。我可以为RHEL盒子使用现有的食谱,我称之为linux-foo。我将其包含在include_recipe 'linux-foo'的默认配方中,并在食谱元数据中添加depends 'linux-foo'

但是,通过向元数据添加依赖项,它会破坏我的自定义Windows配方。我正在

   NoMethodError
   -------------
   undefined method `[]' for nil:NilClass

   Platform:
   ---------
   x64-mingw32

试图在测试厨房中收集窗口配方时。它指的是.../linux-foo/attributes/default.rb作为罪魁祸首,但未指定哪个属性。

有没有办法让include_recipe 'linux-foo'但不能将其作为metadata.rb中的硬依赖项包含在内,或以某种方式包装第三方食谱的默认属性?

看起来我要么保留依赖关系并打破Windows配方,要么将linux和windows配方分成单独的食谱。

1 个答案:

答案 0 :(得分:0)

不幸的是,没有直接的方法可以做到这一点。 Chef目前不支持可选的依赖项。

最好的解决方法是让您的linux-foo食谱安全地加载到非Linux机器上,即使食谱不是。如果您查看错误报告中提到的文件,您可以找到完整的堆栈跟踪,它将告诉您哪条线路需要修复(尽管可能有多条线路)。