how to add custom jinja filters

2,931 views
Skip to first unread message

Ilin

unread,
Nov 26, 2014, 11:58:48 AM11/26/14
to ansible...@googlegroups.com
Hi,

Is there a good example how to extend ansible with custom jinja filters?

I have added this, but my filter is not found
http://docs.ansible.com/intro_configuration.html#filter-plugins

Adding the function to core.py works, but it just looks wrong


Branko Majic

unread,
Nov 26, 2014, 5:02:10 PM11/26/14
to ansible...@googlegroups.com
As it turns out, I played around a bit with this just a couple of weeks
ago, and it's quite simple.

The easiest way is to simply create a directory where your top-level
playbook is (site.yml?) called filter_plugins. Within that directory
you simply put .py files with content similar to (----%---- is just to
show where file begins/ends, don't copy that :):

----%----
def uppercase_all(arg):
return arg.upper()


class FilterModule(object):
def filters(self):
return {'uppercase_all': uppercase_all}
----%----

With the above in place, you can simply use the filter uppercase_all
within your playbooks, roles etc. Note that you don't necessarily need
to have the same name for function and filter, but it's probably better
to do it that way.

If you look at the page you posted, it will direct you to
http://docs.ansible.com/developing_plugins.html which describes most of
I wrote (although, in a bit of a less verbose way, and without
examples).

I hope this helps.

Best regards

--
Branko Majic
Jabber: bra...@majic.rs
Please use only Free formats when sending attachments to me.

Бранко Мајић
Џабер: bra...@majic.rs
Молим вас да додатке шаљете искључиво у слободним форматима.
signature.asc

Ilin Tatabitovski

unread,
Nov 27, 2014, 3:35:30 AM11/27/14
to ansible...@googlegroups.com
Hi Branko,

Thanks for the reply, I got it working.

What was different in my case is that the folder was named "filters".
I renamed it to "filter_plugins" and it works fine now.

I also noticed that the setting http://docs.ansible.com/intro_configuration.html#filter-plugins
in the config file has no effect. I may open issue on github.

Regards,
ilin


--
You received this message because you are subscribed to a topic in the Google Groups "Ansible Project" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ansible-project/A7fGX-7X-ks/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/20141126230152.52d18fcb%40zetkin.primekey.se.
For more options, visit https://groups.google.com/d/optout.



--

Michael DeHaan

unread,
Dec 1, 2014, 4:06:59 PM12/1/14
to ansible...@googlegroups.com
If that path is not taking on the 1.8.X series, please do.   Thanks!



--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.

To post to this group, send email to ansible...@googlegroups.com.

Nayeem Syed

unread,
May 1, 2017, 2:20:48 PM5/1/17
to Ansible Project, bra...@majic.rs
the approach outlined below doesn't seem to be working, Ansible can't find existing filters anymore after I add this in?
Reply all
Reply to author
Forward
0 new messages