Ansible is a configuration management tool. It automates the configuration management and even creation of the machines. It is very popular among System Admins and DevOps engineers as it reduces the configuration and management overhead drastically. It is in much demand because it is free and need only a working SSH connection to perform all the task on one or multiple hosts.
Lets look a bit deeper in the ins and outs of Ansible.
Features and Advantages of Ansible:
Ansible is agent less, which mean it does not need any client application to be installed on the nodes which we want to provision.
All you need is a working ssh connection and SSH keypairs.
You don’t need a central server to run Ansible playbook from. You can run Ansible from any machine which has SSH access to the intended nodes. So there is no overhead of managing the master machine.
Idempotency means that no matter how many times you run a piece of code on a system, the result will always be same.
Ansible states that its scripts “will seek to avoid changes to the system unless a change needs to be made”. So until and unless you make a configuration change in your code, the result will be same n number of times that playbook is run.
Ansible is written in python hence it is extremely powerful. It gives you the ability to add-on more features as per the needs so you can extend the configuration as the need for implementation grows.
You can write your own Ansible modules to make certain things work for you.
Plug and Play:
Ansible has a beautiful feature called roles which makes it even more robust and easy to use. If you want to configure extra services, just write new roles for those services and include them in your playbook. Keep on adding roles as per your requirements there is no limits.
Push Based Model and Immediate roll-out:
Ansible uses push based deployment model which means all the configuration changes are sent to the nodes form a central machine. It does not require an agent and hence does not depend on the previous state of the nodes thus minimizing the total deploy time. Ansible pushes the changes to all the nodes regardless of their previous states and it also let you know where the updates failed so that you can take appropriate actions to cater to those failures.
Cloud computing, resource orchestration and automation, these are the demands in industry these days and Ansible stands tall on all these promises. Ansible supports integration with major private/public cloud API. It does not need any third party tool and provides excellent integration with OpenStack and Amazon AWS cloud, making your life very easy. Just few lines of codes and it will create, configure and provision n number of nodes for you on the cloud.
Work based and on demand task execution:
Ansible playbooks can be executed on-demand and based on some specific work. This feature of Ansible lets you debug your infrastructure at any point of time by running adhoc commands on the servers and get the result.
Once Click Deploy:
No matter how many machines and no matter how much configurations. Just one click is all that you need!
This is how beautiful Ansible is. You can choose any configuration management tool to automate your infra but Ansible certainly has an edge over the other tools.