This article will discuss, where the Ansible configuration files are located and how Ansible selects them and how we can edit default settings.
Configuring Ansible:
The Ansible behavior can be customized by modifying settings in the Ansible configuration files. Ansible chooses its configuration file from one of many locations on the control node.
-
/etc/ansible/ansible.cfg
This file contains the base configuration of the Ansible. It is used if no other configuration file is found. ~/.ansible.cfg
This ~/.ansible.cfg configuration is used instead of the /etc/ansible/ansible.cfg because Ansible for .ansible.cfg in the home directory of the user../ansible.cfg
If the Ansible command is executed in the directory where the ansible.cfg is also present ./ansible.cfg will be used.
Recommendations of Ansible configuration files:
Ansible recommends creating a file in the directory from where you run the ansible command.
Varibale ANSIBLE_CONFIG
To define the location of the configuration file Ansible gives you a more handy option to define the configuration file by allowing you to change the environment variable named ASNIBLE_CONFIG. If you define this ANSIBLE_CONFIG variable, Ansible uses the configuration file that the variable specifies instead of any of the previously mentioned configuration file.
Configuration File Precedence:
Ansible Configuration File Precedence Table | ||
First preference | Environment variable ANSIBLE_CONFIG overrides all other configuration files. If this variable is not settled, then second preference will be taken | |
Second preference | The directory in which the ansible command was run is then checked for configuration file ‘ansible.cfg’. If this file is not present, then Ansible goes to third preference. | |
Third Preference | The user’s home directory is checked for a .ansible.cfg file. | |
fourth preference | The global /etc/ansible/ansible.cfg file is only used if no other configuration file is found. |
Due to Ansible’s capability to handle configuration from multiple locations, sometimes it makes the user confused to determine the active configuration file.
So how use can determine which file is active?
How to check which Ansible configuration file is being used?
You can run the ansible –version command to identify which version of Ansible is installed and which configuration file is used.
[ali@controller /]$ ansible --version
ansible 2.9.16
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/ali/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.6.8 (default, Aug 24 2020, 17:57:11) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
[ali@controller /]$
If you need servers to practice Ansible or Linux?
SeiMaxim is a leading Dutch web hosting company and provides resources to learn Ansible and Linux. If you want to get virtual servers to learn Ansible you can place your order and use code SE-ANSIBLE211 to rent two servers in just 18 USD.