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
  • importas …
  • 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 関数で文字列の分割の仕方 – Qiita

split a string on a delimiter | Osvaldo Toja

How to split strings and join them in A​nsibl​e | 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 A​nsibl​e | 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

ディクショナリの全要素を繰り返し処理する。

参考:

Ansible の Jinja2 を活用する | ほげめも

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

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA