Jinja2
参考:
Jinja 2.11.x Documentation [Official]
ドキュメント
参考:
Template Designer Documentation | Jinja 2.11.x Documentation [Official]
使い方
参考:
Jinja2 Python テンプレートエンジン – Qiita
Ansible の Template 機能の紹介 – Qiita
制御構文
for
…in
… /else
/endfor
if
/elif
/else
/endif
macro
/endmacro
call
/endcall
filter
/endfilter
set
/endset
block
/endblock
extends
include
import
…as
…with context
/without context
参考:
List of Control Structures | Jinja 2.11.x Documentation [Official]
演算子
参考:
Math | Jinja2 Documentation (2.10) [Official]
Comparisons | Jinja2 Documentation (2.10) [Official]
Logic | Jinja2 Documentation (2.10) [Official]
Other Operators | Jinja2 Documentation (2.10) [Official]
If Expression | Jinja2 Documentation (2.10) [Official]
フィルター
参考:
List of Builtin Filters | Jinja2 Documentation (2.10) [Official]
Filters | Ansible Documentation [Official]
テスト
参考:
List of Builtin Tests | Jinja2 Documentation (2.10) [Official]
関数
参考:
List of Global Functions | Jinja2 Documentation (2.10) [Official]
改行
参考:
Whitespace Control | Jinja2 Documentation (2.10) [Official]
jinja2 how to remove trailing newline – Stack Overflow
split
文字列を分割してリストを返す。
参考:
split a string on a delimiter | Osvaldo Toja
How to split strings and join them in Ansible | Ansible Tutorials (mydailytutorials.com)
Split string into list in jinja? – Stack Overflow
Jinja2 Split string by white spaces – Stack Overflow
join
リストを連結して文字列を返す。
指定したデリミタを挟んで連結する。
{{ list | join(', ') }}
アトリビュートを抽出して連結する。
{{ users | join(', ', attribute='name') }}
参考:
join(value, d=u”, attribute=None) | Jinja2 Documentation (2.10) [Official]
How to split strings and join them in Ansible | Ansible Tutorials (mydailytutorials.com)
for
リストの各要素を繰り返し処理する。
参考:
複数のリストをまとめて for 文で処理する – Qiita
Jinja2 で for ループのインデックスを取得する方法 | present
Jinja2 でループのインデックスを取得する | 山本隆の開発日誌
For | Jinja2 Documentation (2.10) [Official]
Loop over Ansible variable array in Jinja2 template – Server Fault
how to iterate over a list of list in jinja – Stack Overflow
if
条件に応じた処理をする。
参考:
If | Jinja2 Documentation (2.10) [Official]
default
デフォルト値を設定する。
参考:
default(value, default_value=u”, boolean=False) | Jinja2 Documentation (2.10)
map
リストのアトリビュートを抜き出す。
{{ users | map(attribute='username') | join(', ') }}
リストの各要素にフィルターを適用する。
{{ titles | map('lower') | join(', ') }}
参考:
map() | Jinja2 Documentation (2.10) [Official]
Jinja2 map( ) Filter – OzNetNerd
selectattr
リストの各要素をテストして真であるものを抽出する。
参考:
selectattr() | Jinja2 Documentation (2.10) [Official]
How to select/reduce a list of dictionaries in Flask/Jinja – Stack Overflow
extract
インデックスのリストを与えて、リストの該当する要素を抽出する。
{{ [0,2] | map('extract', ['x','y','z']) | list }} # => ['x', 'z']
キーのリストを与えて、ディクショナリの該当する値を抽出する。
{{ ['x','y'] | map('extract', {'x': 42, 'y': 31}) | list }} # => [42, 31]
参考:
Extracting values from containers | Ansible Documentation [Official]
sort of list comprehension? – Stack Overflow
iteritems
ディクショナリの全要素を繰り返し処理する。
参考:
For | Jinja2 Documentation (2.10) [Official]
リスト内包表記 (list comprehension)
Jinja2 ではリスト内包表記は使えないので、通常の for
構文を使って処理する。
参考:
List comprehensions in Jinja – Stack Overflow
Why isn’t there a list comprehension filter? · Issue #43778 · ansible/ansible – GitHub
拡張子を取り除く
参考:
Remove suffix from the right side of a text | Python Adventures
How do I remove a substring from the end of a string in Python? – Stack Overflow
プラグイン
参考:
PublicaMundi/ansible-plugins: A collection of (possibly) usefull Ansible plugins – GitHub