Is there any way to output the roles_path in a task (not the specific path 
to a role, I mean the search path)?

The doco for Ansible 2.5 says that roles are found in the ./roles directory 
relative to the playbook file, and in /etc/ansible/roles.

"ansible-config list" says that roles are also found in ~/.ansible/roles, 
/usr/share/ansible/roles and /etc/ansible/roles - the first two are not 
mentioned in the doco.

It seems to me from my testing that roles are also found in the current 
working directory, and in the playbooks directory.

I have a role called other_role (i.e., a directory called other_role, 
containing a tasks directory containing main.yaml) in /tmp.

As a control, I have another role called local_role in ./playbooks/roles

Finally I have an extremely simple playbook in ./playbooks that references 
the roles:

---
- hosts: localhost

  roles:
     - { role: local_role }
     - { role: other_role }

If I place other_role in my ./playbooks/roles directory:

   mv /tmp/other_role ./playbooks/roles
   ansible-playbook -v playbooks/test.yaml  --> both roles run
 
If I place other_role in my ./playbooks directory:

   mv ./playbooks/roles/other_role ./playbooks
   ansible-playbook -v playbooks/test.yaml  --> both roles run

If I place other_role in my current working directory (my playbook 
directory's parent) :

   mv ./playbooks/other_role .
   ansible-playbook -v playbooks/test.yaml  --> both roles run

If I place other_role in /etc/ansible/roles:

   sudo mv ./other_role /etc/ansible/roles
   ansible-playbook -v playbooks/test.yaml  --> both roles run

If I place other_role back in the /tmp directory (or anywhere else except 
the above four locations), running the playbook produces a "role not found" 
error:

   mv ./other_role /tmp

so it seems to me that the search path for roles contains at least these 
four locations:

- the current working directory
- the directory containing the playbook
- the roles directory relative to the directory containing the playbook
- /etc/ansible/roles

Plus the other two that ansible-config reports (that I didn't test):
- ~/.ansible/roles
- /usr/share/ansible/roles

Is all this expected? In what order are these locations checked when a role 
is referenced?

Regards, K.

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/1629e6e4-5ce3-4e36-9b80-fc7799fc8dd0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to