# lookup paths and reuse of roles

**URL:** <https://forum.ansible.com/t/lookup-paths-and-reuse-of-roles/17750>\
**Category:** Ansible Project\
**Created:** [March 16, 2015, 11:30am UTC](https://forum.ansible.com/t/lookup-paths-and-reuse-of-roles/17750 "2015-03-16T11:30:21Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mirko\_Friedenhagen](https://avatars.discourse-cdn.com/v4/letter/m/838e76/32.png) [@Mirko\_Friedenhagen](https://forum.ansible.com/u/Mirko_Friedenhagen)\
**Post date:** [March 16, 2015, 11:30am UTC](https://forum.ansible.com/t/lookup-paths-and-reuse-of-roles/17750/1 "2015-03-16T11:30:21Z")

</div>

Hello,

I have written a role create\_user which does the following:  
- creates a user U  
- creates /etc/ssh/authorizedkeys/U with content of user U's  
authorizedkeys (copy task)  
- creates /etc/ssh/ignores/ignore\_U with content U (copy task)

The role needs two variables:  
- username  
- authorizedkeys

Now when wanted to use the role in another one I have two options.  
Say my other rule name is setup\_jenkins\_build\_user where I want to  
create a user jenkins, it's authorized keys are specified in  
roles/setup\_jenkins\_build\_user/files/authorizedkeys

Option a)

I do this in roles/setup\_jenkins\_build\_user/tasks/main.yml:

- include: "{playbook\_dir}/roles/create\_user/tasks/main.yml"  
&nbsp;&nbsp;vars:  
&nbsp;&nbsp;&nbsp;&nbsp;- username: jenkins  
&nbsp;&nbsp;&nbsp;&nbsp;- authorizedkeys: "{{lookup('file', role\_path + '/files/authorizedkeys')}}"

which I do not like, because {{playbook\_dir}} makes an assumption  
about where the role create\_user resides. Usage of role\_path is OK  
here, I think, because role\_path just points to the role  
setup\_jenkins\_build\_user here and does not break encapsulation.

Option b)

I declare create\_user as a dependency in  
roles/setup\_jenkins\_build\_user/meta/main.yml like this:

dependencies:  
&nbsp;&nbsp;- role: create\_user  
&nbsp;&nbsp;&nbsp;&nbsp;username: jenkins  
&nbsp;&nbsp;&nbsp;&nbsp;authorizedkeys: "{{lookup('file', playbook\_dir +  
'/roles/setup\_jenkins\_build\_user/files/authorizedkeys')}}"

which I do not like, because {{playbook\_dir}} now makes an assumption  
about where the role setup\_jenkins\_build\_user resides.

I am not able to use role\_path here, because role\_path is now set to  
roles/create\_user but not roles/setup\_jenkins\_build\_user

I already did look at the content of the inject parameter in  
ansible/runner/lookup\_plugins/file.py but could not find any reference  
to the role where the dependency stemmed from.

Regards Mirko
