handler-ы оправданы, а когда register?
                  
                  
                  Общие соображения такие (дальше - полотенце, сори): 
                  
                  
                  
                  
                  
                  - handler-ы шарятся между ролями, значит, что в случае конфликта имен, сделав nofity в одной роли, можно случайно дернуть handler другой роли, который делает не то, что мы ожидали
                  
                  
                  
                  
                  
                  - по-умолчанию, в случае нескольких сработавших handler-ов, если какой-то один падает, то все остальные не срабатывают
                  
                  
                  
                  
                  
                  - по-умолчанию, без force_handlers, если в одном таске вызвался notify на срабатывание handler-а, а следующий task свалился, то handler не сработает и это может привести к неконсистентному состоянию - при следующем проигрывании изменений не будет -и handler-ы уже не сработают
                  
                  
                  
                  
                  
                  - порядок вызова handler-ов гарантировать нельзя - по сути порядок определяется их порядком следования в файле, где они объявлены, а не порядком вызовов notify
                  
                  
                  
                  
                  
                  - если в play-е, при подключении ролей, одни роли опираются на другие роли и подключаются в определенном порядке, то роли, которые играются позже могут сфейлиться, т.к. таски от notify еще не сработали (они срабатывают в конце play-я) и получается, 
                  
                  
                  нужно знать какие handler-ы и в каких ролях живут (инкапсуляция страдает), чтоб разнести такие роли по разным play-ям. 
                  
                  
                  
                  
                  
                  - meta: flush_handlers позволяет дернуть все handler-ы, но тогда вопрос, почему одна роль влияет на то, как работают другие роли? пользовалю, который проигрывает плейбук хочется детерминированного поведения и когда он видит, что вроде бы играется одна роль, а потом из-за flush_handlers начинают работать таски других ролей, которых в текущей проигрываемой роли никак быть не могло, то это введет в заблуждение.
                  
                  
                  
                  
                  
                  - в ansible можно играть плейбук пошагово начиная с какого-то таска - с тасками последовательность шагов будет такой, как объявлено в плейбуке и ролях, а в случае handler-ов - не понятно, какой будет порядок выполнения
                  
                  
                  
                  
                  
                  - на handler-ы не распространяется serial
                  
                  
                  —- 
                  
                  
                  
                  
                  
                  итого - кажется, что register + отдельный таск постабильнее и понадежнее будут
                  
                  
                
Все становиться проще когда в 1 роль не впихивают все что только в голову пришло. Раздроби все по ролям, сделай их независимыми друг от друга
Обсуждают сегодня