I\'m trying to filter a list in ansible in Jinja2 when the elements contain a string, but the Jinja documentation doesn\'t seem clear enough for me to figure it out.
Thi
The select
filter would take another filter. Like in the docs odd
, which will return only the odd elements of the list. The filter you would like to combine select
with is equalto
.
Now here's the thing. Ansible bundles a very old version of Jinja2, which simply does not contain the equalto
filter. Yes, that renders it useless unless you want to filter odd elements. (Which nobody ever in history wanted to...)
Furthermore I was yet unable to make custom filter plugins work in Ansible 2. So you're pretty much forced to hack something ugly together.
helloV already showed one option. Here is another idea:
- name: run script
shell: /usr/tmp/run_script.py | grep "running script"
register: script_results
Update:
I recently discovered you can use match
(not a standard Jinja2 filter but added by Ansible) together with select
. Thats a good replacement for the eualto
filter plus you can use regular expressions. This should work:
{{ script_results.stdout_lines | select("match", ".*running script.*") }}