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_block
Ressource 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 execute
Ressource finden Sie in den offiziellen Dokumenten:https://docs.chef.io/resource_execute.html