Ansible is a simple-to-use automation tool. Ansible can be used to automate deployments, updates, security, systems management, container provisioning and more. The configuration files are easy to manage YAML files written in plain English. Installation is simple and due to its Master-Push format, there are no agents needed on remote machines. Communications with remote machines is via SSH.
There are usually a few steps involved in deploying your code into production (to the live site). The number of steps increases as your Site/App/Webapp becomes larger and more complex.
The solution to this is automated deployment. Automation comes in the form of scripts that act as a set of instructions (just as all code does) outlining each of these steps.
Ansible is an automation tool, often used for deployment as mentioned above, but increasingly used for other complex automations.
It uses a language called <ahref='https://en.wikipedia.org/wiki/YAML'target='_blank'rel='nofollow'>YAML</a> which allows you to describe the instuctions close to plain English, as you can see in this Ansible module example:
A significant benefit of using Ansible is that it uses SSH (Secure SHell) by default, and the modules can reside on any machine (computer) without requiring servers, daemons or databases.
The true power of Ansible is in using playbooks. Read more about configuration and use of Ansible on [Ansible's official documentation](https://docs.ansible.com/ansible/latest/index.html).
Ansible modules are small task-specific programs. Once they serve their intended purpose (for example, running your deployed script), these modules are removed by Ansible.