Ansible facts are details Ansible collects about each managed host, such as its OS, hardware and network configuration. By default, the setup module gathers them at the start of every play. You read them from ansible_facts, or as top-level variables with an ansible_ prefix. Installed packages are not part of the default facts. The package_facts module collects those when you need them.
Facts let one playbook adapt to each host.
- name: Display OS information
debug:
msg: "This host runs {{ ansible_distribution }} {{ ansible_distribution_version }}"
- name: Conditional based on facts
yum:
name: httpd
state: present
when: ansible_os_family == "RedHat"
You can also set facts of your own. set_fact sets them for the rest of the run.
- name: Set custom fact
set_fact:
custom_variable: "custom_value"
When a play never reads facts, set gather_facts: false on the play. It skips the gathering step, which speeds up runs on large inventories.
- name: Disable fact gathering
hosts: webservers
gather_facts: false
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓