Automation is eating the world, but it's also one of the hardest task to begin with, especially in big corporations. The advantages are well known:
- reducing the delivery time
- avoiding human errors
- saving the time for more valuable projects
Nevertheless, the first reason that people don't automate at work is the available time!
We don't have time to win time. In fact, once you have automated a task, it's scaling well for 10, 100 or 1000 machines. What is the catch? Certainly, make sure the transformation phase is in your plan.
Virtually, automation is not a piece of cake. It requires the understanding of multiple concepts (idempotence, Phoenix Infrastructure, ...) and choosing the right tool to act.
Even if you have managed through the previous step, there is still a stumbling block for some people: the risk. What is the most absolute nightmare of a company? From our experience, it's a shutdown on our production services. And we know, the poor execution of automation system can lead to the situation where we cannot roll back.
Complexity and risk have destroyed a lot of automation projects. Nevertheless there is always a solution to catch up with the next industrial revolution.
Let's have a look on some tips and tricks, to bootstrap your automation project.
Linking theory with practice
First issue: which tool? To begin with the thorough understanding of concepts, is a must.
Knowing that every tool is built to easily adopt the concepts, there is an easy shortcut: replace the theorical initiation with a rule of thumb. Trust us, there will be time to understand the full concepts later.
Keep in mind, practice makes perfect, all the solutions are accompanied by a theorical overview inside their online documentation, normally it's enough to get the basics.
Ansible is compatible with AIX, *BSD, HP-UX, Linux, OSX, Solaris and Windows, has a small learning curve, is agentless and doesn't require an extra server. Furthermore, ou can setup ansible with your favorite CI tool, or with AWX. Moreover, it can be handful to manage your network devices (switch, firewalls, etc...).
Our ultimate recommandation is Ansible.
Now that you have your tool, try not bite off more than you can chew. If there is something we have learned for the last few years of software development, is that iteration is great.
Automate something you are familiar with. Be wise, and pick the task which doesn't require the insight of the complete tool and easy to implement.
There is no such a thing as Zero risk in IT, that's why, don't trust the frauds who say the opposite. Nevertheless, the risk can be limited by deploying only on testing/pre-production environment or doing one of these simple tasks:
- Change MOTD
- Update bash shell to have a shell color depending on the env
- Add/remove some ssh keys
Automation of the next task is coming soon, beware that complexity will increase. It's time to have a better vision of the theory, but go easy on that or you are going to get lost.
Some further advice on automation:
- Small Iterations
- Put your code on git
- Use the Pull Request system
- Work with your peers
Make it an habit: you have a task, let's take 10 minutes instead of 5, and automate it.
Good luck with your automation!