This Ansible collection provides jq()
, a filter that slices and dices JSON
just like the jq command. It's particularly good with deeply nested lists
of dicts, and dicts of lists.
A list of databases & nested users such as
databases:
- {name: db1, users: [{username: alice}, {username: alex}]}
- {name: db2, users: [{username: bob}, {username: brienne}]}
can be transformed by a template expression such as
{{ databases | moreati.jq.jq('map({db: .name, user: .users[].username}) }}
into a flat list
[
{"db": "db1", "user": "alice"},
{"db": "db1", "user": "alex"},
{"db": "db2", "user": "bob"},
{"db": "db2", "user": "brienne"}
]
You can try out jq expressions at jqplay.org, starting with this example.
To install this collection run
ansible-galaxy collection install moreati.jq
This collection requires
To install Python jq run
python -m pip jq
Python jq is only needed on the Ansible controller (the host your playbooks
run from). It's not needed on Ansible targets (hosts your playbooks run
against). The jq
command isn't needed.
pre-compiled wheels have been published for CPython 2.7, and 3.x on MacOS, and Linux (x86, x86_64). Other Python version, and pltforms will need to build the module from source.
None.
No dependencies on other roles.
Apache 2.0