Hi Kahlil,
In Jinja2.7 you have the following filters that can be used to traverse or extract parts of lists:
select
selectattr
reject
rejectattr
map
so I believe that following would work
{{ ansible_em1.ipv6 | selectattr(‘scope’, ‘local’) | first | attr(‘address’) }}
just off the top of my head and untested.
Your example looks logical, and looks like it should work, but I get this error when trying to use it:
TASK: [debug msg=‘{{ansible_em1.ipv6 | selectattr(“scope”, “local”) | first | attr(“address”)}}’] ***
fatal: [ns1.ams.authdns.ripe.net] => Traceback (most recent call last):
File “/Users/anandb/git/gii-ansible/portable/lib/ansible/runner/init.py”, line 394, in _executor
exec_rc = self._executor_internal(host, new_stdin)
File “/Users/anandb/git/gii-ansible/portable/lib/ansible/runner/init.py”, line 485, in _executor_internal
return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port, complex_args=complex_args)
File “/Users/anandb/git/gii-ansible/portable/lib/ansible/runner/init.py”, line 679, in _executor_internal_inner
module_args = template.template(self.basedir, module_args, inject, fail_on_undefined=self.error_on_undefined_vars)
File “/Users/anandb/git/gii-ansible/portable/lib/ansible/utils/template.py”, line 319, in template
varname = template_from_string(basedir, varname, vars, fail_on_undefined)
File “/Users/anandb/git/gii-ansible/portable/lib/ansible/utils/template.py”, line 539, in template_from_string
res = jinja2.utils.concat(rf)
File “”, line 12, in root
File “/Users/anandb/git/gii-ansible/portable/lib/jinja2/filters.py”, line 349, in do_first
return next(iter(seq))
File “/Users/anandb/git/gii-ansible/portable/lib/jinja2/filters.py”, line 931, in _select_or_reject
if modfunc(func(transfunc(item))):
File “/Users/anandb/git/gii-ansible/portable/lib/jinja2/filters.py”, line 925, in
name, item, args, kwargs)
File “/Users/anandb/git/gii-ansible/portable/lib/jinja2/environment.py”, line 438, in call_test
raise TemplateRuntimeError(‘no test named %r’ % name)
TemplateRuntimeError: no test named ‘local’
I tried to use Google to look for examples on how to use selectattr, but found nothing useful. The Jinja2 documentation for this filter is quite sparse. If anyone has any more suggestions, I’d be grateful.
Anand