Note
This module is part of ansible-base
and included in all Ansible installations. In most cases, you can use the short module name set_fact even without specifying the collections:
keyword. Despite that, we recommend you use the FQCN for easy linking to the module documentation and to avoid conflicting with other collections that may have the same module name.
New in version 1.2: of ansible.builtin
cacheable
to yes
to save variables across executions using a fact cache. Variables created with set_fact have different precedence depending on whether they are or are not cached.Note
This module has a corresponding action plugin.
Parameter | Choices/Defaults | Comments |
---|---|---|
cacheable boolean added in 2.4 of ansible.builtin |
| This boolean converts the variable into an actual 'fact' which will also be added to the fact cache, if fact caching is enabled. Normally this module creates 'host level variables' and has much higher precedence, this option changes the nature and precedence (by 7 steps) of the variable created. https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
This actually creates 2 copies of the variable, a normal 'set_fact' host variable with high precedence and a lower 'ansible_fact' one that is available for persistance via the facts cache plugin. This creates a possibly confusing interaction with meta: clear_facts as it will remove the 'ansible_fact' but not the host variable. |
key_value string / required | The set_fact module takes key=value pairs as variables to set in the playbook scope. Or alternatively, accepts complex arguments using the args: statement. |
Note
var=value
notation can only create strings or booleans. If you want to create lists/arrays or dictionary/hashes use var: [val1, val2]
.See also
The official documentation on the ansible.builtin.include_vars module.
More information related to variable precedence and which type of variable wins over others.
- name: Setting host facts using key=value pairs, note that this always creates strings or booleans set_fact: one_fact="something" other_fact="{{ local_var }}" - name: Setting host facts using complex arguments set_fact: one_fact: something other_fact: "{{ local_var * 2 }}" another_fact: "{{ some_registered_var.results | map(attribute='ansible_facts.some_fact') | list }}" - name: Setting facts so that they will be persisted in the fact cache set_fact: one_fact: something other_fact: "{{ local_var * 2 }}" cacheable: yes # As of Ansible 1.8, Ansible will convert boolean strings ('true', 'false', 'yes', 'no') # to proper boolean values when using the key=value syntax, however it is still # recommended that booleans be set using the complex argument style: - name: Setting booleans using complex argument style set_fact: one_fact: yes other_fact: no
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/ansible/builtin/set_fact_module.html