ansible --versionansible 1.9.2 configured module search path = /usr/share/ansible$ cat play-test.yml---- name: dependency test gather_facts: false hosts: localhost
roles: - { role: feature1 } - { role: feature2 }
$ cat roles/feature1/tasks/main.yml---- name: in feature1 debug: msg="here we are in feature1"
$ cat roles/feature1/meta/main.yml---allow_duplicates: yesdependencies: - { role: base }
$ cat roles/feature2/tasks/main.yml ---- name: in feature2 debug: msg="here we are in feature2"
$ cat roles/feature2/meta/main.yml ---allow_duplicates: yesdependencies: - { role: base }
$ cat roles/base/tasks/main.yml ---- name: in base debug: msg="here we are in base"
$ ansible-playbook play-test.yml
PLAY [dependency test] ********************************************************
TASK: [base | in base] ******************************************************** ok: [localhost] => { "msg": "here we are in base"}
TASK: [feature1 | in feature1] ************************************************ ok: [localhost] => { "msg": "here we are in feature1"}
TASK: [feature2 | in feature2] ************************************************ ok: [localhost] => { "msg": "here we are in feature2"}
PLAY RECAP ******************************************************************** localhost : ok=3 changed=0 unreachable=0 failed=0 $ cat play-test.yml ---- name: dependency test gather_facts: false hosts: localhost
roles: - { role: feature1, tags: feature1 } - { role: feature2, tags: feature2 }
$ ansible-playbook play-test.yml --list-tasks
playbook: play-test.yml
play #1 (dependency test): TAGS: [] in base TAGS: [feature1] in feature1 TAGS: [feature1] in feature2 TAGS: [feature2]$ ansible-playbook play-test.yml --list-tasks -t feature1
playbook: play-test.yml
play #1 (dependency test): TAGS: [] in base TAGS: [feature1] in feature1 TAGS: [feature1]$ ansible-playbook play-test.yml --list-tasks -t feature2
playbook: play-test.yml
play #1 (dependency test): TAGS: [] in feature2 TAGS: [feature2] Hi @MorphBonehunter, the problem is because allow_duplicates needs to be set on the base role, not in each of the intermediate roles. Move it there and this should work for you.
$ ansible-playbook play-test.yml --list-tasks
playbook: play-test.yml
play #1 (dependency test): TAGS: [] in base TAGS: [feature1] in feature1 TAGS: [feature1] in feature2 TAGS: [feature2] $ ansible-playbook play-test.yml --list-tasks -t feature1 playbook: play-test.yml play #1 (dependency test): TAGS: [] in base TAGS: [feature1] in feature1 TAGS: [feature1] $ ansible-playbook play-test.yml --list-tasks -t feature2 playbook: play-test.yml play #1 (dependency test): TAGS: [] in feature2 TAGS: [feature2]