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.
Asked
Active
Viewed 2.4k times
1 Answers
60
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" }

Thomas Decaux
- 21,738
- 2
- 113
- 124

techraf
- 64,883
- 27
- 193
- 198
-
2Up-to-date link to documentation: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_lookup.html P.S. Can't edit post since 'Suggested edit queue is full' – user2988142 Aug 18 '22 at 11:44
-
This solution is not suitable for every use case, as set_facts doesn't change the variable value. So if another task depends on on a change, it will not run. – alixander Nov 22 '22 at 15:51