chef: Ruby ブロック内の Mixlib::ShellOut の CommandTimout を増やすにはどうすればいいですか?

chef: Ruby ブロック内の Mixlib::ShellOut の CommandTimout を増やすにはどうすればいいですか?

Chef 11.10.4 ベースのクライアントを搭載した Ubuntu 14.04 システムで、Chef レシピでデータベース データのロードを実行しようとしています。Ruby ブロックでデータのロードを実行していますが、ログ内のエラーの関連部分は次のとおりです。

Mixlib::ShellOut::コマンドタイムアウト

コマンドは 600 秒後にタイムアウトしました:

コマンドは許可された実行時間を超過したため、TERM 信号によって強制終了されました。

[2015-10-06T01:24:00+00:00] エラー: ruby​​_block[Load Dataset] (chef-virtuoso::load 行 178) にエラーが発生しました: Mixlib::ShellOut::CommandTimeout: コマンドが 600 秒後にタイムアウトしました:

shell_out!Ruby ブロック内のデフォルトの CommandTimeout を 3600 に増やす方法を誰か知っていますか?

失敗しているレシピの Ruby ブロックは次のとおりです。

::Chef::Recipe.send(:include, Chef::Mixin::ShellOut)

ruby_block "Load Dataset" do
  block do
    shell_out!(DATA_LOAD_COMMAND)
  end
end

答え1

shell_out!オプションでタイムアウトを指定できる 2 番目のパラメータ ハッシュを受け取ります。

shell_out!(DATA_LOAD_COMMAND, timeout: 7200)

そうは言っても、あなたの例に基づくと、リソースを使用する必要はなく、代わりにまたはリソースruby_blockのいずれかを使用する方がメリットが大きいようです。scriptexecute

どちらも同じことを実行するタイムアウト リソース プロパティをサポートしています。executeリソースに関する追加のドキュメントは、公式ドキュメントに記載されています。https://docs.chef.io/resource_execute.html

関連情報