これは、Ansible Advent Calendar 2020(Adventor版)の20日目の記事です。
はじめに
少しタイトルがわかりにくいかもしれませんが、例えばこうです。
abc
という文字列を 3回繰り返しabcabcabc
にする[1, 2, 3
] というリストを 3回繰り返し[1, 2, 3, 1, 2, 3, 1, 2, 3]
にする
動作確認環境
- Ansible 2.9.14
- Jinja2 2.11.2
演算子 *
を利用してリピート
言われてみればそりゃそうだという感じかもしれませんが、*
を使います。
Jinja2 のドキュメントにも記載があります。 https://jinja.palletsprojects.com/en/master/templates/#math:titile
This can also be used to repeat a string multiple times. {{ '=' * 80 }} would print a bar of 80 equal signs.
おためし
--- - hosts: all gather_facts: false tasks: - name: repeat test1 debug: msg: "{{ 'abc' * 3 }}" - name: repeat test2 debug: msg: "{{ [1, 2, 3] * 3 }}" - name: repeat test3 debug: msg: "{{ '-' * 20 }}"
実行結果
TASK [repeat test1] ********************************************* ok: [localhost] => { "msg": "abcabcabc" } TASK [repeat test2] ********************************************* ok: [localhost] => { "msg": [ 1, 2, 3, 1, 2, 3, 1, 2, 3 ] } TASK [repeat test3] ********************************************* ok: [localhost] => { "msg": "------------------------------" }
おわりに
「Python 的にあれが使えるから Ansible (Jinja2)でも使えるかも」のと思いながら、Jinja2 のドキュメントを見ると新しい発見があるかもしれません。