厨师:我如何增加一个ruby块的Mixlib :: ShellOut的CommandTimout?

我试图在一个基于Chef 11.10.4的客户端的Ubuntu 14.04系统上的厨师食谱中执行数据库数据加载。 我正在做一个ruby块的数据加载,这里是在日志中的错误的相关部分:

Mixlib :: ShellOut ::的CommandTimeout

命令在600s后超时:

命令超过允许的执行时间,被TERM信号所杀死。

[2015-10-06T01:24:00 + 00:00]错误:ruby_block [加载数据集](chef-virtuoso :: load line 178)出现错误:Mixlib :: ShellOut :: CommandTimeout:600s后超时:

任何人都知道如何增加一个shell_out!的默认CommandTimeout为3600 shell_out! 在一个ruby块?

这里是从配方的ruby块是失败的:

 ::Chef::Recipe.send(:include, Chef::Mixin::ShellOut) ruby_block "Load Dataset" do block do shell_out!(DATA_LOAD_COMMAND) end end 

shell_out! 需要一个可选的第二个参数散列,它可以指定一个超时

 shell_out!(DATA_LOAD_COMMAND, timeout: 7200) 

这就是说,根据你的例子,它看起来并不像你需要使用ruby_block资源, ruby_block可能从scriptexecute资源中获益更多。

这两个支持超时资源属性,这将做同样的事情。 您可以在官方文档中find有关execute资源的其他文档: https : //docs.chef.io/resource_execute.html