It occurred to me the other day while looking for some cool videos of robots for my son, that there are many parallels between IT automation and robots. Both share properties that really highlight the critical importance of automating your IT infrastructure. By automation, I mean taking tedious, manual, and often repetitive tasks and using some type of scripting or tool to do the hard work. This could be system deployment, infrastructure management, or even code testing.
Why do we automate at all? Let's consider those fine industrial robots. What are they good at and what are the advantages of using them:
- Safer for difficult or dangerous tasks
- Eliminate human error
- Consistency of operation
- Work 24/7
- Allow humans to focus on customers and innovation
- initial outlay is quickly recovered due to improved efficiencies and quality
Now let's revisit that list and think how automated IT operations can deliver the same benefits.
Eliminating human error and consistency? A well written script will always do as it's told and execute the same tasks every time.
Work 24/7? Most environments have a pretty hefty list of activities that need to occur after hours. Think of backups and patching. Who really wants to work through the night on these things? Not me.
Fast? Scripts and tools operate much faster than you and I. Need to set up 50 new VMs? A scripted process will beat you and your fancy GUI every time.
Allow humans to focus on customers and innovation? This is perhaps the best, but least recognised strength. Letting us focus on what we are really good at.
Initial outlay is quickly recovered due to improved efficiencies and quality? Investing some time and effort up front in a good framework of tools and processes will pay dividends quickly.
Now think about how the large service providers manage their growing data centres. It's not by throwing human resources at it. I still remember when you could justify an IT staff member for every 20 servers. There are now many data centres overseas with 100,000+ servers in them. In ye olde days that would have been, extrapolating, well, 5,000 staff. OK, maybe not that many, but you get the idea. The new data centres are very lightly staffed but very highly automated. Any failed physical component is replaced and automatically rebuilt and re-integrated.
Ask yourself, or your team, how automated your environment is. Take a finger in the air guess at how much work is done manually. Think about a DR scenario and the realistic recovery time ("I restored my database file, but my whole app stack needs to be rebuilt!"). There is much room for improvement.
How to automate
Every half decent product these days has an open Application Program Interface (API). This means most tasks are now fair game for automating. API's can be accessed through all sorts of tools, methods and scripting languages.
Even if you aren't much of a scripter, many people have likely already done most of the hard work for you. If you are in IT, you are probably already a logical thinker and well-armed. Most scripts follow a logical procedural flow.
Start at either end
The small end
Start small. Find simple repetitive tasks and just have a go. There is almost nothing you might want to do that someone hasn't already tried and documented online. Read Nick Bowie's great article PowerCLI - Automation's Gateway Drug on how to get started with PowerCLI and VMware. I recommend searching on stackoverflow.com for almost any scripting puzzle.
Scripting tools are generally free and you have several choices no matter what type of environment you work in. The ones I see most commonly in practice are:
- Windows PowerShell - a must in Windows and Azure environments. Did you know you can even use PowerShell to manage your AWS services? Check out this AWS PowerShell page.
- VMware PowerCLI - a powerful set of extensions to PowerShell for VMware environments.
- Python - a well understood and relatively easy to use language usable across platforms.
- Shell scripts (e.g. Bash etc.)
My top three automation scripting tips are:
- Change your thought process to "I have to do x; how would I script/automate that?"
- Practice, practice, practice
- Expect failure anywhere and deal with it. Expecting the AD user query to always return a result? Plan for it not to as well.
The big end
When you have a taste for what's possible and want to go beyond just simple scripts, then having an automation framework in place is the way to go. These help simplify the development, control and deployment of tasks and scripts.
- vRealize Automation (vRA)
- vRealize Orchestrator (vRO, also previously known as vCenter Orchestrator)
I won't go into the pros and cons of each as they are well covered elsewhere, but I will say that we have customers very successfully using vRA and vRO in combination with IP address management from Infoblox to automate the provisioning and destruction of full test environments.
I won't deny that these tools can seem complex and challenging to manage and operate, but if you are committed, the rewards are there. It is getting easier though and the level of expertise among the industry is growing all the time.
Complete the circle
As your automation journey continues you should also consider integration of other business services such as service management. Request and approval workflows can easily be incorporated, giving a more end-to-end solution linking requestors, authorisers, implementers, and consumers.
Automation is a necessity when developing cloud infrastructure (public or private, in-house or out-sourced). The shift to cloud-native applications also depends heavily on automation.
The too hard basket
Despite all the good news, some things are still difficult to automate. Robots and software are great at doing one thing consistently, but they are not very adaptable. When more interpretation is required, or where results may be more unpredictable, it may not be possible to cater for all possibilities. Pick the easy stuff first.
Watch the monitor
One of the keys to successful automation is good monitoring. You need good information to base automation on. As you hand off tasks you will need assurance they are running as designed.
Get talking to get started
Talk to others, talk to us, talk to your Nanna (it's been a while hasn't it?). Find out what others are using and get the warts and all version. The one thing we should all agree on is that automation is a key ingredient of all progressive IT environments, whatever your size. It will improve your business and give you more time to be the IT innovators that you are.
Now, I did mention some cool robots at the start, so here are some videos of them in action:
- Catching - https://www.youtube.com/watch?v=EqMPLnIRUvQ
- Rock, paper, scissors - https://www.youtube.com/watch?v=3nxjjztQKtY
- Fanta challenge - https://www.youtube.com/watch?v=SOESSCXGhFo
And if you still have concerns that robots will soon take over the world, then watch the first 10 seconds of this video to reassure yourself, that for some tasks, they still have a long way to go! https://www.youtube.com/watch?v=GuXLvrBrO3s
So, I say "welcome!" to our new shiny metallic friends.
What are you automating in your IT environment? Share your thoughts and experiences in the comments below.