what is an Ansible?
Ansible is , in short , an IT automation, configuration management and provisioning tool.
It uses ‘playbooks’ to deploy, manage, build, test and configure anything from full server environments to web sites to custom compiled source code for applications.
It brings together aspects of environment management that have been traditionally separate and managed independently.
Taking control of your environment with a single tool has a number of advantages.
With Ansible, you can control server deployment configuration , making everything consistent.With modules and plugins, you can build or ‘hook’ into other applcations and control them as well.
Configuration management is an extremely complex topic but is absolutely core to the heart of DevOps environments, Consistency is one of the primary driving principles to being able to dynamically manage the overall software and environment delivery lifecycle so that business enabling functionality is delivered constantly.
Ansible vs. Other Tools
What other Tools?
Basically, Ansible ‘plays in the sandbox’ of a large number of deployment and configuration management tools such as:
Jenkins /Salt /Puppet/Chef/Fabric
However, Ansible works at a high enough level that it can also be used in conjunction with one or more of these tools .
Ansible is very often called an ‘orchestration’ tool since it can function independently as well as ‘control’ one or more of the tools listed above.
Ansible vs The World
There are some key differences in these technologies, let’s talk about a few:
Puppet/Chef will usually contain a ‘master’ or ‘controller’ server in the setup. Ansible, operating only with SSH , dose not.Any system with Ansible can function in that role at any time based on the task or deployment type.
Workflow– Push vs. Pull
Since most configuration management tools have a ‘master’ server, they use the ‘pull’ method(i.e. the client ‘checks in’ with the server to pull it’s configuration). Ansbile uses the ‘push’ method, requiring no client installation or configuration(other than general Python).
Resource Definitions and Execution Ordering
Puppet(for example) instructions are not applied in order (in other words, not ‘top to bottom’ in how they appear in the manifest).Ansbile uses pure in order execution, which can be easy to read as well as convert from other languages or scripts.
Ansbile is built upon Python and the huge standard of inclusive functionality that comes with it. Puppet(Ruby)and Chef or Salt are not quiet so inclusive.
Puppet is based on custom DSL while Ansbile is based on YAML standard.
This is not really a competition.Depending on your environment, experience and goals ,Ansible may or may not be the tool for you. Ansbile does provide some advantages in terms of overall orchestration and standardization of tools and language, but that doesn’t preclude some of its ‘competition’ from being usefull in their own ways. It’s up to you!