roles:
                  
                  
                      - { role: some_role }
                  
                  
                      - { role: role_that_will_fail }
                  
                  
                      
                  
                  
                  - name: Play #2
                  
                  
                  
                  
                  
                  Задача: если выполнение play #1 фейлится, продолжить выполнение play #2 в зависимости от текста ошибки.
                  
                  
                  Изменить роль role_that_will_fail - не вариант.
                  
                  
                  
                  
                  
                  Если сделать - { role: role_that_will_fail, ignore_errors: true}, то эффект немного не тот. 
                  
                  
                  Если во время выполнения таска возникает ошибка, то он просто скипается - такой вариант не подходит.
                  
                  
                  Нужно, чтобы выполнение play #1 прекратилось, и начал выполняться play #2.
                  
                  
                  
                  
                  
                  Пришёл к следующему варианту:
                  
                  
                  - name: Play #1
                  
                  
                    hosts: hostname
                  
                  
                    tasks:
                  
                  
                    - block:
                  
                  
                        - include_role:
                  
                  
                            name: "{{ item.role }}"
                  
                  
                          loop:
                  
                  
                            - { role: some_role }
                  
                  
                            - { role: role_that_will_fail }
                  
                  
                      rescue:
                  
                  
                        - name: Make sure that error isn't fatal
                  
                  
                          fail:
                  
                  
                            msg: Cannot recover
                  
                  
                          when: ansible_failed_result.msg != "Minor error, can continue"
                  
                  
                          
                  
                  
                  - name: Play #2
                  
                  
                  
                  
                  
                  Как такой вариант? Или может всё-таки попроще можно?
                  
                  
                  Или задумка вообще сама по себе не оч?
                  
                  
                
роль, которая фейлится: почему ее нельзя починить?
Обсуждают сегодня