當調試廚師食譜中的錯誤時,我通常喜歡登錄到有問題的機器,輸入「shef -z」。在以前成功運行的情況下,已註冊的run_list會自動加載所有相關的屬性和配方,以便我可以直接跳到嘗試有問題的線路。是否可以在shef(chef shell)客戶端模式下強制run_list加載
問題是如果chef-client在第一次運行時失敗,那麼run_list是空的,並且shef甚至從緩存中刪除了「它的食譜不再需要在此客戶端上」的(非常需要的)食譜。有沒有辦法強制shef讓我使用我的run_list?
官方的wiki mentions:
「運行列表會以同樣的方式作爲普通廚師客戶 運行進行設置。」
但嘗試「-j」似乎沒有幫助。
我也嘗試運行獨奏模式(「-s -j」),如blog post中所述。它加載run_list(而不展開,這是奇怪的),但是當我嘗試做任何事情,我得到的東西,如:
「食譜的tomcat沒有發現如果你從另一個 食譜裝載的tomcat,確保你在你的元數據中配置依賴項「。
請注意,我的食譜有3個深度的幾十個依賴關係,因此將所有代碼手動粘貼到shef並不是真正的選擇。我目前的解決方法是上傳一個修改後的配方,註釋掉所有可能有問題的部分(並從那裏手動繼續),但我希望有一個更好的選擇。
我想它不會在獨奏模式下擴展運行列表,因爲運行列表擴展是Chef Server API接口的一部分(請參閱/ environments下的cookbook_versions POST),並且需要一些依賴解決代碼,這些代碼可能不適用於廚師獨奏。 –