Search code examples
ansiblejinja2ansible-template

Rendering Ansible template into the fact variable


Is there a way to render Ansible template into the fact? I tried to find a solution but it looks like temp file is the the only way.


Solution

  • I think you might be just looking for the template lookup plugin:

    - set_fact:
        rendered_template: "{{ lookup('template', './template.j2') }}"
    

    Usage example:

    • template.j2

        Hello {{ value_for_template }}
      
    • playbook.yml

        ---
        - hosts: localhost
          gather_facts: no
          connection: local
          vars:
            value_for_template: world
          tasks:
            - debug:
                var: rendered_template
              vars:
                rendered_template: "{{ lookup('template', './template.j2') }}"
      
    • The result:

        TASK [debug] *******************************************************************
        ok: [localhost] => {
            "rendered_template": "Hello world\n"
        }