Lesson 2.2: Managing ansible configuration files
Creating Ansible Configuration file
# Create a file with predefined name ansible.cfg
[devops@serverA playbooks]$ pwd
/home/devops/playbooks
[devops@serverA playbooks]$ vi ansible.cfg
# The file path can be relative or absolute path
# The configuration file does not need lie in the same dir as inventory file, it could be anywhere. But the standard practice is shown below.
[devops@serverA playbooks]$ cat ansible.cfg
[defaults]
inventory=/home/devops/playbooks/inventory
Querying Inventory
[devops@serverA playbooks]$ ansible devservers --list-hosts
hosts (2):
192.168.208.102
192.168.208.103
[devops@serverA playbooks]$ ansible testservers --list-hosts
hosts (1):
192.168.208.104
[devops@serverA playbooks]$ ansible testweb --list-hosts
hosts (3):
192.168.208.104
192.168.208.102
192.168.208.103
# Listing individual hosts
[devops@serverA playbooks]$ ansible 192.168.208.102,192.168.208.103 --list-hosts
hosts (2):
192.168.208.102
192.168.208.103
# Listing all
[devops@serverA playbooks]$ ansible all --list-hosts
hosts (3):
192.168.208.104
192.168.208.102
192.168.208.103
[devops@serverA playbooks]$ ansible *.example.com --list-hosts
hosts (1):
sanjeeb.example.com
# Take action in those who has common host in different groups
[devops@serverA playbooks]$ ansible 'testservers:&devservers' --list-hosts
hosts (1):
sanjeeb.example.com
# Present in testservers but not in devservers
[devops@serverA playbooks]$ ansible 'testservers:!devservers' --list-hosts
hosts (1):
192.168.208.104
Ansible Configuration Files Priority
Highest to Lowest Priority
-
- $ANSIBLE_CONFIG
-
- ./ansible.cfg
-
- ~/.ansible.cfg
-
- /etc/ansible/ansible.cfg
Checking the Ansible Configuration files
[devops@serverA playbooks]$ ansible --version
ansible [core 2.14.17]
config file = /home/devops/playbooks/ansible.cfg
configured module search path = ['/home/devops/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.9/site-packages/ansible
ansible collection location = /home/devops/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.9.18 (main, Sep 7 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/usr/bin/python3)
jinja version = 3.1.2
libyaml = True