from ansible import context
from ansible.inventory.manager import InventoryManager
from ansible.parsing.dataloader import DataLoader
from ansible.template import Templar
from ansible.vars.manager import VariableManager
def render(template):
"""
Render jinja2 template using Anisble's API.
"""
options = context.CLIARGS
sources = options['inventory']
loader = DataLoader()
inventory = InventoryManager(
loader = loader,
sources = sources
)
variable_manager = VariableManager(
loader = loader,
inventory = inventory
)
templar = Templar(
loader = DataLoader(),
variables = variable_manager.get_vars(...) # <<< HERE
)
return templar.template(template)
def filter_render_test(*args, **kwargs):
return render("{{ foo }}")
class FilterModule(object):
def filters(self):
return {
'render_test': filter_render_test,
}