Exim, по умолчанию, не позволяет Вам передать почту обратно себе. Можно изменить это поведение при помощи сам опция маршрутизатора. Вот пример от моей конфигурации, в которой я должен был использовать self = send
заставить Exim отправлять "медленную" почту в другой экземпляр на том же хосте:
stalemail:
driver = manualroute
condition = ${if > {$message_age}{900}{yes}{no}}
self = send
domains = ! +local_domains
route_list = * mailhub-01.example.com::8025:mailhub-02.example.com::8025
transport = remote_smtp
Способ прервать выполнение рецепта (например, из-за какого-либо условия) - использовать оператор «return». Подробное обсуждение содержится в ответе jtimberman на параллельный вопрос StackOverflow .
Я бы разделил этот рецепт на две части и использовал include_recipe
внутри оператора if. Например, в cookbooks / foo / default.rb
:
some_condition = File.exists?("/etc/whatever") # Your specific check here
if some_condition
include_recipe "foo::conditional_bit"
end
Поместите свой условный рецепт в cookbooks / foo / recipes / conditional_bit.rb
и добавьте recipe [foo]
в соответствующий список выполнения узла.
Обратите внимание, что порядок выполнения будет немного отличаться от того, если бы вы указали блок ruby. Условие будет проверяться на этапе "компиляции" выполнения программы chef-client, а не на этапе "выполнения". См. Подробности на странице Анатомия шеф-повара .