我有一本需要为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配方分成单独的食谱。
答案 0 :(得分:0)
不幸的是,没有直接的方法可以做到这一点。 Chef目前不支持可选的依赖项。
最好的解决方法是让您的linux-foo
食谱安全地加载到非Linux机器上,即使食谱不是。如果您查看错误报告中提到的文件,您可以找到完整的堆栈跟踪,它将告诉您哪条线路需要修复(尽管可能有多条线路)。