What are Ansible facts

Facts are variables that Ansible collects automatically when controlling a remote system.
Facts provide information that is specific to remote system.
Facts are collected by running the setup module. The first thing when Ansible goes to talk to remote system what it's controling. It is mentioned by the message of setup module:

TASK [Gathering Facts] **********
Example of running setup module:
ansible all -i server01, -m setup
All variables from this module starts with "ansible_". Example:
ansible_hostname - hosname
ansible_fqdn - machine name
ansible_default_ipv4 - network info
ansible_architecture - x84 or x86_64
ansible_distribution - Debian, Ubuntu, CentOS
ansible_os_family - Debian, RedHat etc.
ansible_memtotal_mb - RAM in MB
ansible_processor_cores - number of CPU cores
ansible_virtualization_role - host or guest