我正在嘗試使用基於 Chef 11.10.4 的客戶端在 Ubuntu 14.04 系統上的廚師食譜中執行資料庫資料載入。我正在 ruby 區塊中進行資料加載,以下是日誌中錯誤的相關部分:
Mixlib::ShellOut::CommandTimeout
指令在 600 秒後逾時:
指令超出允許的執行時間,被 TERM 訊號終止。
[2015-10-06T01:24:00+00:00] 錯誤:ruby_block[Load Dataset](chef-virtuoso::load line 178)有錯誤:Mixlib::ShellOut::CommandTimeout:指令在 600 秒後逾時:
shell_out!
有人知道如何將ruby 區塊中的預設 CommandTimeout 增加到 3600嗎?
這是失敗的配方中的紅寶石塊:
::Chef::Recipe.send(:include, Chef::Mixin::ShellOut)
ruby_block "Load Dataset" do
block do
shell_out!(DATA_LOAD_COMMAND)
end
end
答案1
shell_out!
採用可選的第二個參數哈希,它可以指定逾時:
shell_out!(DATA_LOAD_COMMAND, timeout: 7200)
話雖這麼說,根據您的範例,您確實不需要使用資源ruby_block
,並且可能會從 ascript
或execute
資源中受益更多。
這兩個都支援超時資源屬性,它可以做同樣的事情。您可以execute
在官方文件中找到有關該資源的其他文件:https://docs.chef.io/resource_execute.html