我正在尝试使用基于 Chef 11.10.4 的客户端在 Ubuntu 14.04 系统上的 Chef 配方中执行数据库数据加载。我正在 ruby 块中执行数据加载,以下是日志中错误的相关部分:
Mixlib::ShellOut::CommandTimeout
600 秒后命令超时:
命令超出允许的执行时间,被 TERM 信号终止。
[2015-10-06T01:24:00+00:00] 错误:ruby_block[加载数据集](chef-virtuoso::load 第 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
,而且可能会从或script
资源中受益更多execute
。
两者都支持超时资源属性,该属性可执行相同的操作。您可以execute
在官方文档中找到有关该资源的更多文档:https://docs.chef.io/resource_execute.html