8.0 - Templating - Jinja2¶
8.1 - Introduction¶
- Templating = Using variable substitution e.g.
{{ name }}
for variablename
- Jinja2 Templating defined by either
{{ }}
or{% %}
- Jinja = Templating language designed for Python.
String Manipulation - Filters¶
- Make string substitute uppercase:
{{ var name | upper }}
- Lowercase:
{{ var name | upper }}
- Title Case:
{{ var name | title }}
- Replace with a given value
{{ var name | replace("<Original Value>", "<Replacing Value>" }}
- Use defaults:
{{ var name | default("<Default Value>") }}
Filters - List and Set¶
- When working with lists and sets:
- Get minimum:
{{ [1,2,3] | min }}
- Get maximum:
{{ [1,2,3] | max }}
- Get unique values:
{{ [1,2,3] | unique }}
- Get unique values across multiple arrays:
{{ [1,2,3,4] | union( [4,5] ) }}
- Find common values across multiple arrays
{{ [1,2,3,4] | intersect( [4,5] ) }}
- Get a random number:
{{ 100 | random }}
- Join an array of strings:
{{ "word1", "word2", "word3", "word4" | join(" ") }}
Filters - File¶
- Get file basename:
- Windows hosts:
{{ "/path/to/file" | win_basename }}
- Linux Hosts
{{ "/path/to/file" | basename }}
- Get the drive letter from a path
{{ "/path/to/file" | win_splitdrive }}
- Returns an array with the first entry being the drive letter, to isolate it, add an extra pipe
| first
-
For the last filter:
| last
-
Many more filters are available at jinja.pcoo.org/docs
- Additional guidance also available in the Ansible documentation.