Chef: Wie erhöhe ich das CommandTimout für Mixlib::ShellOut in einem Ruby-Block?

Chef: Wie erhöhe ich das CommandTimout für Mixlib::ShellOut in einem Ruby-Block?

Ich versuche, eine Datenbankdatenladung in einem Chef-Rezept auf einem Ubuntu 14.04-System mit einem Chef 11.10.4-basierten Client durchzuführen. Ich führe die Datenladung in einem Ruby-Block durch und hier sind die relevanten Teile des Fehlers im Protokoll:

Mixlib::ShellOut::CommandTimeout

Zeitüberschreitung des Befehls nach 600 s:

Der Befehl hat die zulässige Ausführungszeit überschritten und wurde durch das TERM-Signal beendet.

[2015-10-06T01:24:00+00:00] FEHLER: ruby_block[Datensatz laden] (chef-virtuoso::load Zeile 178) hatte einen Fehler: Mixlib::ShellOut::CommandTimeout: Zeitüberschreitung des Befehls nach 600 s:

Weiß jemand, wie man das Standard-CommandTimeout für einen shell_out!Ruby-Block auf 3600 erhöht?

Hier ist der Ruby-Block aus dem Rezept, der fehlschlägt:

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

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

Antwort1

shell_out!nimmt einen optionalen zweiten Parameter hash an, der ein Timeout angeben kann:

shell_out!(DATA_LOAD_COMMAND, timeout: 7200)

Davon abgesehen sieht es anhand Ihres Beispiels nicht so aus, als ob Sie eine ruby_blockRessource verwenden müssten, und Sie würden wahrscheinlich stattdessen mehr von einer script- oder execute-Ressource profitieren.

Beide unterstützen eine Timeout-Ressourceneigenschaft, die dasselbe bewirkt. Weitere Dokumentation zur executeRessource finden Sie in den offiziellen Dokumenten:https://docs.chef.io/resource_execute.html

verwandte Informationen