# call python function from Ansible template

**URL:** <https://forum.ansible.com/t/call-python-function-from-ansible-template/14591>\
**Category:** Ansible Project\
**Created:** [February 18, 2014, 1:51pm UTC](https://forum.ansible.com/t/call-python-function-from-ansible-template/14591 "2014-02-18T13:51:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Khuong\_Dinh\_Pham](https://avatars.discourse-cdn.com/v4/letter/k/c6cbf5/32.png) [@Khuong\_Dinh\_Pham](https://forum.ansible.com/u/Khuong_Dinh_Pham)\
**Post date:** [February 18, 2014, 1:51pm UTC](https://forum.ansible.com/t/call-python-function-from-ansible-template/14591/1 "2014-02-18T13:51:35Z")

</div>

Hi

Is it possible to call a python function from Ansible template?

Something like this:

{{ add\_number(input) }}

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [February 18, 2014, 1:56pm UTC](https://forum.ansible.com/t/call-python-function-from-ansible-template/14591/2 "2014-02-18T13:56:59Z")

</div>

You can define new Jinja2 filters using filter plugins at least, as well as creating new lookup plugins.

There is no facility for defining new top level functions, but lookup plugins would provide most of the equivalence you’d want.

---

<div class="post-metadata">

**Author:** ![Khuong\_Dinh\_Pham](https://avatars.discourse-cdn.com/v4/letter/k/c6cbf5/32.png) [@Khuong\_Dinh\_Pham](https://forum.ansible.com/u/Khuong_Dinh_Pham)\
**Post date:** [February 18, 2014, 9:07pm UTC](https://forum.ansible.com/t/call-python-function-from-ansible-template/14591/3 "2014-02-18T21:07:19Z")

</div>

Hi

It working fine if I add the filter in lib/ansible/runner/filter\_plugins/core.py

{{ variable|add\_number }}

Can I somehow put it outside the Ansible codebase. I.e. in /home/user/custom\_filters.py and then include it in my tasks yml? something like this:

- include\_filter: src=/home/user/custom\_filters.py

---

<div class="post-metadata">

**Author:** ![Michael\_DeHaan1](https://avatars.discourse-cdn.com/v4/letter/m/5e9695/32.png) [@Michael\_DeHaan1](https://forum.ansible.com/u/Michael_DeHaan1)\
**Post date:** [February 18, 2014, 10:02pm UTC](https://forum.ansible.com/t/call-python-function-from-ansible-template/14591/4 "2014-02-18T22:02:25Z")

</div>

Yep, see here:

[http://docs.ansible.com/intro\_configuration.html#filter-plugins](http://docs.ansible.com/intro_configuration.html#filter-plugins)

---

<div class="post-metadata">

**Author:** ![Khuong\_Dinh\_Pham](https://avatars.discourse-cdn.com/v4/letter/k/c6cbf5/32.png) [@Khuong\_Dinh\_Pham](https://forum.ansible.com/u/Khuong_Dinh_Pham)\
**Post date:** [February 19, 2014, 1:48pm UTC](https://forum.ansible.com/t/call-python-function-from-ansible-template/14591/5 "2014-02-19T13:48:15Z")

</div>

Thx. It’s working fine.
