By Sebastian Feduniak | June 5, 2018
Deployment is just a technical detail, not important for a business. Seriously?
One may say business guys don’t think about deployments. I would say it is your role - as a dev - to make them stop thinking about it. If you doubt, let’s consider the following aspects.
- Doesn’t matter how lovely your application is. How many buzzwords you can use to describe it. It’s all about earning money. To do it, you need more clients, more traffic, more resources, more… whatever it is for you. Making your deployments fast, easy and reliable helps business team to plan an expansion without asking if that’s possible.
- Money I said? So what about time and resources spent on a deployment? In my experience I worked in projects with manual deployment process. It is always a waste of time, isn’t it? Explain to the business why they are waiting for the features…
- Many times I saw that people are scared about fuckups and rollbacks. Why? Because they feel a pressure you have when production is dead and you are the one to perform a rollback. It’s not a problem when your process is automated. And it’s less prone to errors obviously.
- And finally, speeding up features delivery. It doesn’t need to be a continuous deployment. But allowing business team to release new features when they want it is a really great thing. Imagine how many competitors you have on the market. Adding new functionalities is one of the ways to beat them.
Ansible for the rescue!
With that being said you see the business does care about a deployment. As much as you, I believe. Among all the tools we have now, one is shining brighter. Let me present Ansible. Why do we prefer it over the other tools?
- It just works. It’s very flexible. We use it in a physical environment and AWS. Combined with Packer you can use it for AWS AMI baking or for preparing Vagrant box. Out of the box, it has very good coverage of almost all the OS related stuff including filesystem and networking.
- A setup is very easy. You don’t need any agent on the managed machine. Just install python and you are ready to go. In more details, Ansible uses SSH session to perform execution of the commands. You can easily tweak it to make it faster so performance is not an issue there. Guess what? Even in case of fire I prefer to do a change in the script and run it rather than playing with commands on the machine.
- Believe me, it has really shallow learning curve. To me, project structure and the idea of the roles and tasks is so clear that you can read it and understand even seeing it for the first time. Using official good practices to structure your project makes it effortless to move from one project to another.
- So it’s easy yet powerful. File templating, basic testing, retries, errors catching - all these things are included. Moreover, you can easily write and use your own module! Needless to say that most of your needs are already covered by the community.
- It’s a complete and clear documentation of your infrastructure and deployment process. I found it unbelievably easy and helpful to debug a system looking at the Ansible scripts. In one place you see a complete list of your machines, looking at the playbooks you see dependencies between components, digging into role you see where you binary and log files are placed. The great source of the truth.
- With any issues, there is a huge community ready to answer your questions. Moreover, the Ansible Galaxy is an awesome repo of the scripts ready to use. Need mysql or nginx? No problem!
From our experience - Ansible is a way to go when it comes to automated provisioning and deployments. But a key is to organize it in a way which suits your project. We work with fleets of hundreds of machines. Bare metal and cloud. We know how to do it properly. Don’t hesitate to check it.
Learn More About Our Product Oriented Operations Service
We are highly experienced with monitoring and keeping tight operations for massive scale distributed enterprise applications. The best reference of our expertise is that most of the time we know about problems before client does.I want to learn more about it