厨师:如何在 ruby​​ 块中增加 Mixlib::ShellOut 的 CommandTimout?

厨师:如何在 ruby​​ 块中增加 Mixlib::ShellOut 的 CommandTimout?

我正在尝试使用基于 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

相关内容