Sorry, that OR in the precedence applies only to the one item above and the
one item below it.

On Thu, Apr 26, 2018 at 3:49 PM, Karl Auer <[email protected]> wrote:

> I've just done some testing, and a role in the current working directory
> WILL be used, but only if the role cannot be found elsewhere. This is with
> Ubuntu 16.04 and Ansible 2.5.1.
>
> I haven't worked out  the precedence yet, but it appears to be :
>
> - the roles directory below the directory containing the playbook
> - the elements of roles_path from left to right (two elements in my case)
>    OR
> - the elements of the DEFAULT_ROLES_PATH from left to right (three
> elements)
> - the directory the playbook is in
> - the current working directory
>
> To test this, I put a test role in each of the eight possible locations
> (my CWD test was from /tmp) then renamed them all so that the playbook
> would be unable to find them. I then ran the playbook and got the expected
> failure to find the role. Then I renamed the role in each of the locations
> in turn, to the name expected by the playbook, checked that the playbook
> could find it, then renamed it away again.
>
> One surprise was that although the comment in the distributed ansible.cfg
> says that the roles_path variable is for "additional paths to search for
> roles in", in fact roles_path will, if specified, REPLACE the defaults.
>
> On my system the default role paths (i.e., with no roles_path specified
> in ansible.cfg) are ~/.ansible/roles, /usr/share/ansible/roles, and
> /etc/ansible/roles.
>
> Regards, K.
>
>
> On Wednesday, April 25, 2018 at 6:18:22 AM UTC+10, Karl Auer wrote:
>>
>> 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/19adfdd8-d595-4166-8db1-736f68cc913c%40googlegroups.
> com
> <https://groups.google.com/d/msgid/ansible-project/19adfdd8-d595-4166-8db1-736f68cc913c%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Karl Auer

Email  : [email protected]
Website: http://2pisoftware.com

GPG/PGP : 958A 2647 6C44 D376 3D63 86A5 FFB2 20BC 0257 5816
Previous: F0AB 6C70 A49D 1927 6E05 81E7 AD95 268F 2AB6 40EA

-- 
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/CA%2B%2BT08ToodCAesyzArEtSE_ytaXaMaNBwkvouVJqazzga%3D4ZKg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to