# parameterized first found

**URL:** <https://forum.ansible.com/t/parameterized-first-found/20218>\
**Category:** Ansible Project\
**Created:** [January 14, 2016, 6:17pm UTC](https://forum.ansible.com/t/parameterized-first-found/20218 "2016-01-14T18:17:46Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![vadimv\_Vatlin](https://avatars.discourse-cdn.com/v4/letter/v/ec9cab/32.png) [@vadimv\_Vatlin](https://forum.ansible.com/u/vadimv_Vatlin)\
**Post date:** [January 14, 2016, 6:17pm UTC](https://forum.ansible.com/t/parameterized-first-found/20218/1 "2016-01-14T18:17:46Z")

</div>

This code works with ansible 1.9.4

> - name: Configure user parameters  
> template: src={{ lookup(‘first\_found’, [‘userparameter\_’ + item + ‘_’ + ansible\_pkg\_mgr + ‘.j2’, 'userparameter_’ + item + ‘.j2’]) }} dest=/etc/zabbix/zabbix\_agentd.d/userparameter\_{{ item }}.conf  
> with\_items: “{{ zabbixagent\_userparameters }}”  
> when: zabbixagent\_userparameters is defined  
> notify:
> - restart zabbix-agent

But not working with 2.0.0.1

> > TASK [zabbix-agent : Configure user parameters] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 
> > task path: /etc/ansible/roles/zabbix-agent/tasks/main.yml:23
> 
> > An exception occurred during task execution. The full traceback is:
> 
> > Traceback (most recent call last):
> 
> > File “/usr/lib/pymodules/python2.7/ansible/executor/process/worker.py”, line 114, in run
> 
> > self.\_shared\_loader\_obj,
> 
> > File “/usr/lib/pymodules/python2.7/ansible/executor/task\_executor.py”, line 91, in run
> 
> > item\_results = self.\_run\_loop(items)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/executor/task\_executor.py”, line 241, in \_run\_loop
> 
> > res = self.\_execute(variables=task\_vars)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/executor/task\_executor.py”, line 356, in \_execute
> 
> > self.\_task.post\_validate(templar=templar)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/playbook/task.py”, line 238, in post\_validate
> 
> > super(Task, self).post\_validate(templar)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/playbook/base.py”, line 307, in post\_validate
> 
> > value = templar.template(getattr(self, name))
> 
> > File “/usr/lib/pymodules/python2.7/ansible/template/ **init**.py”, line 350, in template
> 
> > d[k] = self.template(variable[k], preserve\_trailing\_newlines=preserve\_trailing\_newlines, fail\_on\_undefined=fail\_on\_undefined, overrides=overrides)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/template/ **init**.py”, line 322, in template
> 
> > result = self.\_do\_template(variable, preserve\_trailing\_newlines=preserve\_trailing\_newlines, escape\_backslashes=escape\_backslashes, fail\_on\_undefined=fail\_on\_undefined, overrides=overrides)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/template/ **init**.py”, line 474, in \_do\_template
> 
> > res = j2\_concat(rf)
> 
> > File “”, line 10, in root
> 
> > File “/usr/lib/python2.7/dist-packages/jinja2/runtime.py”, line 193, in call
> 
> > return \_\_obj(\*args, \*\*kwargs)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/template/ **init**.py”, line 401, in \_lookup
> 
> > ran = instance.run(loop\_terms, variables=self.\_available\_variables, \*\*kwargs)
> 
> > File “/usr/lib/pymodules/python2.7/ansible/plugins/lookup/first\_found.py”, line 183, in run
> 
> > if os.path.isabs(fn) and os.path.exists(fn):
> 
> > File “/usr/lib/python2.7/posixpath.py”, line 61, in isabs
> 
> > return s.startswith(‘/’)
> 
> > AttributeError: ‘list’ object has no attribute ‘startswith’

What I do wrong ?

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [January 29, 2016, 12:48am UTC](https://forum.ansible.com/t/parameterized-first-found/20218/2 "2016-01-29T00:48:52Z")

</div>

the lookup is returning a list, not a string, as a workaround:

template: src={{ lookup('first\_found', [ 'userparameter\_' + item +  
'\_' + ansible\_pkg\_mgr + '.j2', 'userparameter\_' + item + '.j2' ])[0]  
}}

---

<div class="post-metadata">

**Author:** ![vadimv\_Vatlin](https://avatars.discourse-cdn.com/v4/letter/v/ec9cab/32.png) [@vadimv\_Vatlin](https://forum.ansible.com/u/vadimv_Vatlin)\
**Post date:** [January 29, 2016, 7:08am UTC](https://forum.ansible.com/t/parameterized-first-found/20218/3 "2016-01-29T07:08:10Z")

</div>

thank you very much.

is it make any sense that first\_found return a list ?  
i think that _first_ means that list will always contain 1 element.

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [January 29, 2016, 2:25pm UTC](https://forum.ansible.com/t/parameterized-first-found/20218/4 "2016-01-29T14:25:19Z")

</div>

looking into that, for most lookups the answer is 'yes', in this case  
it can be considered a bug, you should open an issue in github.

---

<div class="post-metadata">

**Author:** ![Brian\_Coca](https://avatars.discourse-cdn.com/v4/letter/b/6de8d8/32.png) [@Brian\_Coca](https://forum.ansible.com/u/Brian_Coca)\
**Post date:** [February 3, 2016, 7:58pm UTC](https://forum.ansible.com/t/parameterized-first-found/20218/5 "2016-02-03T19:58:37Z")

</div>

fixed in [https://github.com/ansible/ansible/pull/14281](https://github.com/ansible/ansible/pull/14281), will be out in the next releases
