はじめに
小ネタ中の小ネタです。
Ansible、というより Jinja2 には int
という、値を整数に変換するフィルターがあります。
いわゆるキャストと考えると、数字らしきないものにフィルターをかけるとエラーとなりそうですが、このフィルターの場合は 0
が返ってきます。
Jijna2 の公式ドキュメントにも以下の記載があります。
If the conversion doesn’t work it will return 0.
この記事では簡単なサンプルを試します。
- 動作確認環境
- Ansible 2.9.6
- Jinja2 2.11.1
サンプル Playbook
何種類かの値を int
フィルターにかけてみます。
--- - hosts: localhost gather_facts: false tasks: - name: int test debug: msg: "{{ item | int }}" loop: - 123 - "123" - 123.4 - "hello"
結果
実行結果です。 hello
は 0
になりました。
$ ansible-playbook -i localhost, int.yml PLAY [localhost] *************************************************************************************************** TASK [int test] **************************************************************************************************** ok: [localhost] => (item=123) => { "msg": "123" } ok: [localhost] => (item=123) => { "msg": "123" } ok: [localhost] => (item=123.4) => { "msg": "123" } ok: [localhost] => (item=hello) => { "msg": "0" } PLAY RECAP ********************************************************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0