Now is the Era of Cloud where you can dynamically provision IT infrastructure more quickly than you ever thought before. Various cloud providers such as Amazon Web Services, Azure, Google Compute Engine and many others have made this possible in recent years. This has changed the view about our IT infrastructure but increased the complexity and has made you think “How are you going to manage these fleet of servers? How are you going to automate the deployments?” and many other questions. Configuration management tools have made it easy for system admins and DevOps professionals to provision and automate tasks on managing these huge fleet of servers. Ansible is one such configuration management tool which is based on Python and has gained popularity in the configuration management arena. Ansible automates and solves an organisation’s complex problems like automating tasks, provisioning instances on the cloud, configuring and installing packages, patching the instances and deploying the apps with ease.
What made Ansible awesome for Devops?
Few queries that strike us are :
- We are already using a configuration tool and what difference is Ansible going to make?
- How would we configure agents on our fleet of servers?
- How this tool going to do its job of configuring our large fleet?
- Should we learn a new programming language in order to use this tool ?
- Does Ansible have any Master and managing one extra node really worth it?
Below are the answers for all your queries :
Ansible is agentless which frees you from installing agents on servers and managing them unlike the other configuration management tools like Chef, Puppet. This agentless architecture has added several advantages for Ansible in terms of network security by communicating through SSH, zero bootstrapping and resource utilization. So SSH and key pairs are your friends when using Ansible.
Ansible uses what are known as “playbooks” which define what actions need to be performed on the instances. Ansible playbooks are idempotent, which means you can run your playbooks as many times and the state will not be affected unless you define a change. So playing with your playbooks will not break your system.
Push Based Model:
While the other tools like Chef, Puppet require a central server to pull the configuration information, Ansible allows you to push the commands and apply changes on our fleet of servers directly . It also gives us the flexibility for pushing the commands only to specific groups amongst our vast fleet of servers. For example: Before applying a particular software on the entire fleet of servers, we can apply and test it out on a small group and on that basis , you can decide whether to apply it on the entire fleet or not.
Simple to use:
Ansible is known for its simplicity. It is based on Python but our playbooks that do the job are based on YAML which makes them easy to understand . So, no worries regarding learning another programming language for using this tool. So, there is less overhead for sysadmins and devops professionals in order to use it.
Ansible is Masterless which means, we can pull our playbooks and start playing with them. We can run them where ever we want provided , they are configured correctly. No need of managing Master and scaling it. Go master free!!!
Plug & Play:
Ansible playbooks have roles which makes it even more powerful. So in case you want to configure your database, you can write a database role and include it in your playbook . Add more roles based on your needs for your fleet and make Ansible march with orders against your fleet!!!!!
Ansible allows to write your own modules. So, you can write your modules in whatever language you want to and all it needs is JSON output.
Ansible has various plugins that integrate with various cloud provider’s APIs such AWS, Azure, Rackspace etc. And you can now automate the tasks like provisioning the instances, configuring, maintaining even destroying them.
These are the few reasons why devops love Ansible and it has a huge place in the configuration management arena.
Hold on tight!!! I will come up with more about Ansible in my future posts.