Ansible Jinja2 Filters: Transform Data in Playbooks (Complete Reference)
By Luca Berton · Published 2024-01-01 · Category: web-servers
Complete reference for Ansible Jinja2 filters. Transform strings, lists, dictionaries, JSON, YAML, IP addresses, hashes, and dates with practical playbook examples and cheat sheet.
Jinja2 filters transform data inline within Ansible playbooks. They convert types, format strings, filter lists, parse JSON/YAML, manipulate IPs, and more — all using the pipe (|) syntax.
String Filters
List Filters
Select & Reject Filters
Dictionary Filters
dict2items / items2dict
Type Conversion
Default Values
JSON Query (json_query)
IP Address Filters
Hash and Encryption
Path Filters
Ternary (Conditional)
FAQ
What are Ansible Jinja2 filters?
Filters transform data using the pipe (|) syntax in Ansible templates and playbooks. They convert types, format strings, filter lists, parse JSON/YAML, and more — executed inline without separate tasks.
What is the difference between select and selectattr?
select filters simple lists by value ([1,2,3] | select('greaterthan', 1)). selectattr filters lists of dictionaries by attribute (users | selectattr('active', 'equalto', true)).
How do I set a default value for undefined variables?
Use the default filter: {{ my_var | default('fallback') }}. Add true as second argument to also trigger default on empty values: {{ my_var | default('fallback', true) }}.
How do I parse JSON in Ansible?
Use from_json: {{ json_string | from_json }}. For querying complex JSON structures, use json_query with JMESPath expressions: {{ data | json_query('[?status==active].name') }}.
Conclusion
Most-used filters quick reference: • default() — Fallback for undefined variables • selectattr() / map() — Filter and transform lists of dicts • to_json / from_json — Serialize/parse JSON • regex_replace() / regex_search() — Pattern matching • combine() — Merge dictionaries • json_query() — JMESPath queries on complex data
Related Articles • Ansible map Filter: Transform Lists • Ansible regex_replace: Search & Replace • Ansible default() Filter: Set Fallback Values • Ansible Variable Precedence Guide • Ansible regex_search Filter Guide • Can You Use assert in Jinja Templates? • Ansible Compare Lists: difference, intersect, union
Category: web-servers