2017-03-03 58 views
0

我有一本食譜,需要爲Windows和RHEL盒安裝軟件。現在有一本我可以用於RHEL盒子的烹飪書,我將其稱爲linux-foo。我將它包含在include_recipe 'linux-foo'的默認配方中,並在食譜元數據中添加depends 'linux-foo'是否可以在不添加配方的情況下使用include_recipe do metadata.rb

但是,通過向元數據添加依賴關係,它破壞了我的自定義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

不幸的是,沒有直接的方法來做到這一點。 Chef目前不支持可選依賴項。

最好的解決方法是讓你的linux-foo食譜安全地加載到非Linux機器上,即使食譜沒有。如果你查看錯誤報告中提到的文件,你可以找到完整的堆棧跟蹤,它會告訴你哪一行需要修復(儘管可能有多個)。

+0

謝謝@coderanger。我檢查了VM上的堆棧跟蹤,它非常神祕,但我會重新審視它。我可以通過哪些方式使第三方'linux-foo'食譜安全並與我的Windows配方兼容?我能否以某種方式在我的食譜中包裝或保護其有問題的默認屬性? – mywoes123

相關問題