Я хочу прервать рецепт во время выполнения на основе определенного состояния, но использовать raise или Chef :: Application.fatal! как описано в этом сообщении How do you abort/end a Chef run? мой рецепт выходит только во время компиляции.Отменить рецепт шеф-повара во время выполнения не во время компиляции
Вот что я пытаюсь (часть моего сценария):
execute "Execute somehthing" do
cwd node['abc']['dir']
command "something >> #{results}"
node.default['success'] = "false"
notifies :run, "ruby_block[jobFailure]", :delayed
not_if "cd #{node['abc']['dir']} && somecommand >> #{results}"
end
ruby_block "jobFailure" do
raise "Exiting the script as the job has failed" if (node.default['success'] == "false")
action :nothing
end
Но при выполнении этого скрипта я получаю сообщение об ошибке, как шеф-повар покидает во время компиляции, только дает ошибку ниже:
Running handlers:
[2014-10-27T17:17:03+00:00] ERROR: Running exception handlers
Running handlers complete
[2014-10-27T17:17:03+00:00] ERROR: Exception handlers complete
[2014-10-27T17:17:03+00:00] FATAL: Stacktrace dumped to c:/Users/manish.a.joshi/
.chef/local-mode-cache/cache/chef-stacktrace.out
Chef Client failed. 0 resources updated in 12.400772 seconds
[2014-10-27T17:17:03+00:00] FATAL: RuntimeError: Exiting the script as the job has failed
Может ли кто-нибудь сообщить мне, есть ли способ выполнить команду raise только на основе условия?
Это не ясно, что ваше состояние. Не могли бы вы изменить свой вопрос, чтобы уточнить, что такое условие, которое вы проверяете? –