一千萬個為什麽

搜索


讓我們說我有一些廚師代碼,如:

require 'mixlib/shellout'
yum_package 'somepackage'
myvar =  Mixlib::ShellOut.new('/bin/somecommand').run_command.stdout.strip

其中/bin/somecommand 尚不存在,因為它是由 somepackage 安裝的。由於這個原因,在配方編譯時這會失敗,但顯然會在收斂時提供程序包安裝成功(如果不是那麽顯然配方失敗了)。如果軟件包已安裝,則它也會失敗,因為它們都是預先編譯在一起的。如何將這些食譜或運行列表安裝在Chef食譜中?

轉載註明原文: 如何烹飪尚不存在的東西

一共有 2 個回答:

具體取決於確切的用例。如果該值僅用作另一個資源上的屬性,則可以使用 lazy 輔助方法。如果你不需要輸出,你可以使用 execute 資源。在一些更復雜的情況下,您可以使用 ruby​​_block 資源或編寫自己的自定義資源。