Возвратитесь из рецепта Шеф-повара, не поднимаясь исключение

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

3
задан 21 June 2012 в 14:40
2 ответа

Способ прервать выполнение рецепта (например, из-за какого-либо условия) - использовать оператор «return». Подробное обсуждение содержится в ответе jtimberman на параллельный вопрос StackOverflow .

2
ответ дан 3 December 2019 в 06:40

Я бы разделил этот рецепт на две части и использовал 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, а не на этапе "выполнения". См. Подробности на странице Анатомия шеф-повара .

1
ответ дан 3 December 2019 в 06:40

Теги

Похожие вопросы