On their web site it is written: Ansible is simple IT automation — and that rather vague statement is exactly as specific as one can be. Because Ansible literally can do most anything. From spinning up virtual machines remotely on a cloud provider, to installing your favorite (but finicky) DOS-games onto your brand new computer, to full web application deployments, Ansible can do it. And since it’s automated, once you’ve got the details figured out, you can replicate a certain configuration infinitely.
The tool itself reflects the infrastructure as code principle that I strongly advocate. It is easy to lose sight of what is installed where, in a three-server infrastructure — let alone if you have 30+ machines. Keeping your infrastructure layout within a version control system is the smart way forward.
So you need a place to document and version-control your configuration. Enter Ansible‘s wonderfully clear YAML configuration. And the cool thing is, if done correctly, you can clone a machine as many times as you want. This makes load balancing and resource pooling of systems a breeze. Need another worker node in your cluster? No worries. Spin up a virtual machine, and feed the host name and your playbook into Ansible. Done.
How I’ve used it…
I’ve used Ansible for years now. Since 2013 I’ve used it for about anything one can do with a computer. However, there are two scenarios in which it the tool is absolutely unbeatable:
Server Provisioning with Ansible
Provisioning is the installing, configuring, and maintaining of system software for servers. These can be web servers, mail servers, cloud machines, cluster nodes, etc. Anything you can imagine. Where ‘serverless’ might be the buzzword of the year, you still need machines to actually run an operating system before they can spin up your containers. These OSes come with software that needs to be configured and maintained with security updates. Human error being what it is, automation is essential. And no tool does automation better than Ansible.
Web application deployment with Ansible
As soon as you want to place an application ‘out there’, you’ll need a deployment process. From a simple distribution of binary files, to full zero-down-time deployment processes of modern load-balanced web applications, Ansible can do it — and a lot leaner than most others.