Ansible is an automation tool used to provision, configure, manage, and deploy servers. It aims at making developers and DevOps lives easier by allowing them to write the infrastructure definition as a code, that can be committed to version control systems such as Git. It comes bundled with many modules that address common tasks such as file creation, user management, installation of dependencies, network configuration, and others. Thanks to Ansible being an open-source project, the community is active and there are countless third-party modules for anything one could need.
The configuration is plain YAML files that are easy to understand and maintain. Ansible does not require any special agent to be running on the target machine, all it needs is an SSH connection and Python, this allows for simple provisioning without much software overhead. Ansible roles can be bundled into playbooks that allow high reusability.
We use Ansible for a number of projects in Kiwee, and our in-house playbooks are reused for different projects, saving valuable time. Ansible enables us to make use of Infrastructure as Code, and allows us to test, track, and review any changes to server configuration.