Ansible: A boon for Industries
Ansible is a radically simple IT automation engine that automates cloud provisioning, configuration management, application deployment, intra-service orchestration, and many other IT needs.
Being designed for multi-tier deployments since day one, Ansible models your IT infrastructure by describing how all of your systems inter-relate, rather than just managing one system at a time.
It uses no agents and no additional custom security infrastructure, so it’s easy to deploy — and most importantly, it uses a very simple language (YAML, in the form of Ansible Playbooks) that allow you to describe your automation jobs in a way that approaches plain English.
The Keys Features of Ansible
Some of the key characteristics of Ansible include:
1. Compatible with Python
Unlike other competing solutions that are built with complex and redundant languages such as Ruby, Ansible is written in Python, one of the robust programming languages. Being compatible with Python makes it easier to run because of the fact that Python libraries are present on most Linux distributions by default.
Although Ansible modules for extending the tool’s functionality can be written in any programming language till the time it returns data in JSON format, being written in Python makes it more popular as Python is the most common language for administrators and system engineers.
2. No need of any agents
Ansible doesn’t use an agent on the remote host. It handles all the master/agent communications with either standard SSH or the Paramiko module (Python implementation of the SSH2) for managing nodes.
The fact that the tool doesn’t require any agents to be installed on remote systems to be managed translates to cost saving because of much less maintenance overhead and performance degradations.
Modules and plugins are other key characteristics of Ansible. These Modules are like small programs that Ansible sends from a control machine to all the nodes or remote hosts. Ansible executes all the modules for either installing updates and then removes them when the required task is finished. Ansible provides more than 400 such modules for common tasks.
The modules in Ansible are executed using playbooks and they control various things such as files, services, and package.
4. Powerful Ansible Playbooks
Ansible is well- known for its powerful Playbooks which are nothing but the detailed instructions manual telling Ansible what to do when it is connected to any machine.
These Ansible Playbooks are written in YAML, which could be simply viewed as XML but are human readable.
When the Playbook is fired off, Ansible will install and configure the web server to make sure that your database server allows connections from the new server and ask to network monitoring solution for intimating in case of any system failures.
5. Robust, security and compliance
Be it firewall rules or locking down users, it can be easily implemented along with other automated processes.
Even if you configure the security details on the control machine and run the playbooks associated with it, all the remote hosts will automatically be updated with those details. It means that Ansible security does not require you to manually monitor each machine for security.
Advantages of Ansible
- Free: Ansible is an open-source tool.
- Very simple to set up : No special coding skills are necessary to use Ansible’s playbooks (more on playbooks later).
- Powerful: Ansible lets you model even highly complex IT workflows.
- Flexible: You can orchestrate the entire application environment no matter where it’s deployed. You can also customize it based on your needs.
- Agentless: You don’t need to install any other software or firewall ports on the client systems you want to automate. You also don’t have to set up a separate management structure.
- Efficient: Because you don’t need to install any extra software, there’s more room for application resources on your server.
We had limited experience with Puppet, but didn’t quite like it because
1) It needs agents, and we don’t like agents and
2) we favor immutability over snowflake factory for infrastructure management.
Ops and devs both feel safer, literally. Before they were always worried about ‘what if the server dies’. They aren’t worried about this anymore after all servers are properly ‘Ansiblized’.
With the help of Vagrant we can test server builds locally as many times as we want until it works, instead of testing it on EC2 cloud which is remote and always slow.