Jinja Tricks
difference
{{ [1, 2, 3] | difference([2, 3, 4]) | join(', ') }}
>> 1
avg, min, max, is_list,
{{ [1, 2, 3] | avg }}
generate random UID
{{ 'random' | uuid }}
date format
{{ 1457456400 | date_format }}
{{ 1457456400 | date_format('%d.%m.%Y %H:%M') }}
2017-03-08
08.03.2017 17:00
string to number
{{ '5' | to_num }}
run Salt execution module
{{ salt.cmd.run('whoami') }}
{{ salt.group.add('newgroup1') }}
regex match
{{ 'abcd' | regex_match('BC(.*)', ignorecase=True) }}
regex search
{{ 'muppet baby' | regex_search('pet(.*)', ignorecase=True) }}
>> baby
compare_lists, compare_dicts
{{ [1,2,3] | compare_lists([1,2,4]) }}
>> {'new': 4, 'old': 3}
list files in a directory
{{ '/etc/salt/' | list_files | join('\n') }}
escape Jinja syntax
{% raw %}
some text that contains jinja {% characters that need to be escaped
{% endraw %}
iterate a dictionary
parent_dict = [{'A':'val1','B':'val2'}]
{% for item in parent_dict %}
{% for key,val in item.items() %}
{{ key }} {{ val }}