Awesome
jq-filter
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.
Example
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.
Installation
To install this collection run
ansible-galaxy collection install moreati.jq
Requirements
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.
Role Variables
None.
Dependencies
No dependencies on other roles.
Example Playbook
License
Apache 2.0