With a rapid development of software delivery and applying it to different areas of our lives, needs of automation has become crucial. Emerge of DevOps movement was motivated by this need — too many precious time was wasted for manual tasks. Additionally all big successful companies have already been using automation and it was one of their fundamental advantage over their competitors who are struggling with legacy approach from old times.
Anyway I’m not gonna convince you that automation is good, cause if you think otherwise then you should probably move toward some traditional craft like pottery where handmade items are much more valued than those made on assembly lines. I’d like however point that many it guys avoid automation and stuck in the `90s approach taking care of their servers by simply logging and executing commands. There are many reasons why they do so and I’ll try to describe top five common ones.
1. You can break many things at once
For many this is a point which can be a good excuse they give their supervisors why they don’t even try to automate their work. They argue that when they type their commands manually (probably dozens of times per day) they have better control. I’ve seen many times however when a small typo had also affected many environments. Actually when you start to use some form of configuration management software (e.g. Ansible, Puppet, Chef) you keep everything as a code in a repository and it allows you to have better control over changes you apply on your infrastructure. Additionally you can and should use practices borrowed from software development area like peer review so that bigger changes can be accepted by your peers. And of course you don’t deploy your changes to your production environment without proper testing like adding unit tests and even put it in its own delivery pipeline just like application code.
2. I’m not a developer and I can’t/won’t code
You don’t need to be a developer to use most of the available tools for configuration management. For example Ansible uses plain yaml files so no coding is needed and (although you can use loops and conditions in some way). The most crucial part connected with programming is keeping your code in repository so git skills (even on basic level) are required. Many solutions are designed in such way that they can be operated on API level. It allows both integration with other tools and also automation. I’m pretty sure that there’s already some good module for your favorite configuration management solution that handles provisioning and configuration of many parts of your environment.
With time you may notice that programming gives you more flexibility and then you just need to ask google for online sites or courses you can use to improve programming skills of your chosen, fancy language. Just remember — if you managed to learn how to compile kernel then learning coding is far less complicated and would be a piece of cake for you!
3. You can’t automate X, because it’s and old, legacy software
I agree, not everything is easy to automate. It doesn’t mean however that it‘s impossible either. We have myriad of great tools you can use. The least you can do is to keep your configuration in a repository if your software can be deployed only manually. Many of the problems are caused by configuration drift — both on application and on operating system layer. If you got this covered then you’re on a good path. Really, you are! Cause the rest is only a matter of provisioning small piece of software (OS with app and other components) that will act accordingly to configuration assigned. And if you use cloud or virtualized infrastructure you can use some form of snapshots or templates which is the easiest way. The most primitive form of automation is… documentation! If you can’t automate it (yet!) start with a simple, small procedure that describes it.
4. It’s against our policy or security standard
I don’t know any standard (security or non-security related) that forbids to use automation. They rather points to some directions and list some specific requirements that needs to be met rather than taking care of recommended tools or approaches.
If such standards existed then how would company that relies on automation so heavily like Amazon meet so many compliances?
Policy and standards should help you to get to desired state without explicitly pointing to methods or tools — it’s up to you whether you approach in manual, tedious and cumbersome way or in controlled and automated manner.
5. “They will fire me if I replace my work with automated tasks”
That is one of the most frequent I’ve heard from people. They tend to believe that by automating their daily tasks they will create some kind of their personal Skynet which will obsolete their job positions — they will be reduced, as all their work will be done by “robots”. Don’t worry, you’re safe. First of all currently there is a really big demand on the job market for professionals which are familiar with automation tools. Besides everything changes and those cool automated tasks you wrote a month ago probably needs some refactoring. Nothing is perfect, everything can be done better, with more style and less code.
I’m sure there are many other reasons why you still prefer to repeat your tasks. That’s funny, because it’s a form of automation that our brains construct — it’s called habit :-) There’s only one way to get rid of them. You need to replace them with another habit: the habit of automating all the things!