はじめに
@ や などをURLエンコード(%40 や %20)したいと思い、Ansible の Filter のページ を参照しましたが、それらしいフィルターはありませでした。
ならばと思って、Jinja2 のドキュメントを見ると urlencode() というフィルターがありました。
この記事では簡単なサンプルで紹介します。
- 検証環境
- Ansible 2.9.9
- Jinja2 2.11.2
サンプル
--- - hosts: localhost gather_facts: false tasks: - name: debug debug: msg: "{{ item | urlencode() }}" loop: - kingyo@example.com - Hello World
実行
$ ansible-playbook -i locahost, urlencode.yml
PLAY [localhost] ****************************************************************************************************
TASK [debug] ********************************************************************************************************
ok: [localhost] => (item=kingyo@example.com) => {
"msg": "kingyo%40example.com"
}
ok: [localhost] => (item=Hello World) => {
"msg": "Hello%20World"
}
PLAY RECAP **********************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
@ が %40 に、 が $20 にURLエンコードされて表示されました。
おわりに
Ansible ドキュメントで目的のフィルターが見つからないときは、Jinja2のドキュメントを確認するのが吉です。