class Template(object): def __init__(self, root_dir, ops_config): loader = ChoiceLoader([ FileSystemLoader(root_dir), FileSystemLoader("/") ]) mode = ops_config.get('jinja2.undefined') undefined = Undefined if mode == 'StrictUndefined': undefined = StrictUndefined elif mode == 'DebugUndefined': undefined = DebugUndefined self.env = Environment(loader=loader, undefined=undefined) self.filter_plugin_loader = PluginLoader( 'FilterModule', 'ansible.plugins.filter', ops_config.ansible_filter_plugins.split(':'), 'filter_plugins' ) for filter in self.filter_plugin_loader.all(): self.env.filters.update(filter.filters()) def render(self, source, vars): jinja_template = self.env.get_template(source) return jinja_template.render(**vars)