Chef:如何在 ruby​​ 區塊中增加 Mixlib::ShellOut 的 CommandTimout?

Chef:如何在 ruby​​ 區塊中增加 Mixlib::ShellOut 的 CommandTimout?

我正在嘗試使用基於 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,並且可能會從 ascriptexecute資源中受益更多。

這兩個都支援超時資源屬性,它可以做同樣的事情。您可以execute在官方文件中找到有關該資源的其他文件:https://docs.chef.io/resource_execute.html

相關內容