I have a playbook which calls some roles which are skipped. For illustration, I have created a dummy playbook with dummy roles. Everyone of these roles is skipped.
---
- hosts: localhost
connection: local
gather_facts: false
roles:
- { role: dummy, when: foo | default(false) }
- { role: dummy, when: foo | default(false) }
- { role: dummy, when: foo | default(false) }
- { role: dummy, when: foo | default(false) }
- { role: dummy, when: foo | default(false) }
and a role dummy
---
- name: "pause 5"
pause:
seconds: "5"
- name: "pause 5"
pause:
seconds: "5"
- name: "pause 5"
pause:
seconds: "5"
- name: "pause 5"
pause:
seconds: "5"
- name: "pause 5"
pause:
seconds: "5"
with role dependencies:
---
allow_duplicates: yes
dependencies:
- { role: dummy2, when: false }
- { role: dummy2, when: false }
- { role: dummy2, when: false }
Also, dummy2 just does a pause:
---
- name: "pause 5"
pause:
seconds: "5"
---
- name: "pause 5"
pause:
seconds: "5"
Using this config, there are 5 calls to role dummy, which has 5 tasks and 3 role dependencies with 2 tasks. So alltogether, 55 tasks are skipped 5*(5*3*2), which takes about 2,5 seconds in my VM. If there are more skipped roles, it takes linearly more time.
Maybe it is not a great design to have many skipped roles, but is there any way to speed up these skipped tasks without re-writing everything?