Ansible is an automation framework that performs simple yet powerful IT orchestration. Much like Git and other popular software today, Ansible is built atop the ssh platform. This allows for Ansible to be very scalable without any remote server configuration aside from an ssh server, which most distributions come packaged with naturally. Ansible rides along an ssh tunnel into your server that you wish to configure. Then using python, Ansible reads from a “playbook” certain steps and server automation for you.
The best thing that I have found from working with Ansible is it’s friendly approach to server automation, allowing you to focus mainly on server development as opposed to spending all of your time preparing a server for deployment. After writing your playbook (Ansible’s instruction-set in a YAML file), you can have a server up to full production state in just one command.
All of Ansible’s commands in your playbook are idempotent. Thus, if any command set has already been accomplished the command will only run again if changes are needed. This is essential for updating any server configurations. With a singular “ghost” configuration, one would only have to edit an apache configuration one time, and then run their playbook. If the server already has the new configuration then nothing is done. However, if the server has a different configuration, the new one would be applied and the server would be restarted. This also allows for the whole playbook to be ran through. If I have a playbook that affects multiple hosts, and one of those hosts are disconnected the playbook will still loop through every host, skipping the disconnected host and throwing a runtime error without pausing the workbook.
Ansible also aides in maintaining daily server status’s as well as daily server management. Ansible has the freedom to run a full or partial playbook for every host, some hosts, or just one host automatically. This allows a systems administrator to run one only one command to automate complex network situations.
With Ansible’s recent partnership with OpenStack in June, I think that this is a great automation tool that I will hopefully be using extensively as it would significantly cut down on my work load.