ansible.cfg sets Ansible's defaults for a project, such as the inventory path, the remote user and how many hosts to run at once. Ansible reads only the first config file it finds, in this order:
- The file named in the
ANSIBLE_CONFIGenvironment variable ansible.cfgin the current directory~/.ansible.cfgin your home directory/etc/ansible/ansible.cfg
The others are ignored, not merged. So keep an ansible.cfg in each project's root and run Ansible from there, and every teammate gets the same settings.
[defaults]
inventory = ./inventory
remote_user = deploy
forks = 20
[privilege_escalation]
become = true
Two catches. Ansible skips an ansible.cfg in a world-writable current directory, because another user could plant one there. And config settings have the lowest precedence: an ANSIBLE_ environment variable overrides the file, and command-line options, playbook keywords and variables override both.
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 ↓