2014-01-17 9 views
6

Давайте представим себе пьесу со следующими ролями: база, мониторинг, nginx и еще одна игра с единственной базой и nginx.Несложная задача запуска, если в playbook включена роль

Теперь я хочу, чтобы в роли мониторинга выполнялась задача, только если в playbook включена роль nginx, потому что для мониторинга nginx мне нужно передать немного другую конфигурацию службе мониторинга.

Как выполнить задачу, которая зависит от существования другой роли?

+1

Не отвечает непосредственно на ваш вопрос, но в качестве обходного пути, возможно, контролирует часть вашей роли _nginx_? Вы когда-нибудь захотите неконтролируемых серверов? – Mxx

+0

Hah, пригвоздил его :) – nvartolomei

ответ

2

Хотя мое обходное решение в комментариях, возможно, сработало для вас, я считаю, что это еще не лучший подход. Он не модульный. Например, в ситуации, когда вы меняете систему мониторинга, вам нужно будет войти в каждую роль и проверить, есть ли у нее компонент мониторинга и обновление этого ... Не самый оптимальный способ.

Может быть, лучше всего было бы еще включать в себя отдельный мониторинг роль, но выполнять определенные задачи, используя playbook conditionals. Например, nginx задача мониторинга будет выполнять только when, этот сервер является частью вашего [webservers]. Или когда определенная переменная установлена ​​на определенное значение или выполняется какое-либо другое соответствующее условие.

+0

Это становится беспорядок таким образом – nvartolomei