Ansible is an automation tool and a complete framework that provides an abstraction layer based on Python tools. Originally, it was designed to handle task automation. This task might be executed on a single server or on thousands of servers and ansible will handle them without any problem; later, Ansible's scope extended to network devices and cloud providers. Ansible follows the concept of idempotency, wherein Ansible instructions can run the same task multiple times and always give the same configuration on all devices at the end, reaching a desired state with minimal changes. For example, if we run Ansible to upload a file to a specific group of servers, then run it again, Ansible will first validate if the file already exist in the remote destination as a result a previous execution or not. if it exist, then the ansible won't upload it
again...