Ansible Module set fact: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
 
(7 intermediate revisions by the same user not shown)
Line 10: Line 10:
=Overview=
=Overview=


This module allows setting new variables.
This module sets new [[Ansible_Concepts#Fact|facts]] (variables). The variables are set on a host-by-host basis just like facts discovered by the setup module and will be available to subsequent plays during an ansible-playbook run.


Variables are set on a host-by-host basis just like facts discovered by the setup module.
Set 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. Per the standard Ansible variable precedence rules, many other types of variables have a higher priority, so this value may be overridden.


These variables will be available to subsequent plays during an ansible-playbook run.
<syntaxhighlight lang='yaml'>
- name: Set bashrc.d directory path
  set_fact:
    bashrc_d: "{{ ansible_env.HOME }}/.bashrc.d"
</syntaxhighlight>


Set 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.
=Setting Command Output as a Fact=
 
{{Internal|Ansible_Module_command#Setting_Command_Output_as_a_Fact|Setting Command Output as a Fact}}
Per the standard Ansible variable precedence rules, many other types of variables have a higher priority, so this value may be overridden.
 
This module is also supported for Windows targets.


=Setting a Fact by Processing the Content of a Variable=
<syntaxhighlight lang='yaml'>
- name: IDEA applications
  set_fact:
    idea_apps: "{{ intellij_apps | to_json | from_json | json_query('files[?contains(path, `/apps/IDEA-`) == `true`]') | list }}"
</syntaxhighlight>
=Setting the Fact Only if the Variable Does Not Exist=
<syntaxhighlight lang='yaml'>
<syntaxhighlight lang='yaml'>
- name: Set bashrc.d directory path
- name:
  when: some_var is not defined
   set_fact:
   set_fact:
     bashrc_d: "{{ ansible_env.HOME }}/.bashrc.d"
     some_var: "some value"
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 21:55, 6 July 2021

External

Internal

Overview

This module sets new facts (variables). The variables are set on a host-by-host basis just like facts discovered by the setup module and will be available to subsequent plays during an ansible-playbook run.

Set 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. Per the standard Ansible variable precedence rules, many other types of variables have a higher priority, so this value may be overridden.

- name: Set bashrc.d directory path
  set_fact:
    bashrc_d: "{{ ansible_env.HOME }}/.bashrc.d"

Setting Command Output as a Fact

Setting Command Output as a Fact

Setting a Fact by Processing the Content of a Variable

- name: IDEA applications
  set_fact:
    idea_apps: "{{ intellij_apps | to_json | from_json | json_query('files[?contains(path, `/apps/IDEA-`) == `true`]') | list }}"

Setting the Fact Only if the Variable Does Not Exist

- name:
  when: some_var is not defined
  set_fact:
    some_var: "some value"