Maybe 2018 isn’t off to quite the best start. Recent processor vulnerabilities have people scrambling to patch and update systems. Stuff like this ends up being a fairly large sink of time for any systems/network administrator. The worst part is that we have practically no control of when this stuff happens or how much time it’s going to take to resolve. What we do have control over, however, is our ability to make our own lives easier through automation.
A lot of people take the beginning of the year to make new resolutions and goals for the coming months. So this year, I’m urging you to add one more to your list: Try and automate something that will make your life easier.
Where to Start
What you choose to automate doesn’t need to be extremely complex or elaborate, just anything that will save you a little bit of time. Never used a scripting language? I can’t recommend enough using Learn Python The Hard Way to start learning. This site is what I used about five years ago to get into scripting. Another great resource is CodeAcademy, where they have web-based interactive tutorials (also check out their specific module on Python and APIs.
Once you get a good handle on the basics, start thinking about repeatable tasks that are great candidates for automation. Start with something simple – maybe a script that prompts the user for information, then generates the command-line entries to configure new switch ports. Then someone can easily copy and paste the commands from the script output to achieve their desired configuration. Something like this might not immediately seem like a huge time savings, but it gives you a place to start and get familiar with what is possible. Once you get something like that working, it’s not too difficult to extend the script later and actually include calls to the switch APIs to automate the changes.
Is Python/scripting your only option? Not at all. There are also automation toolsets like Ansible, which can abstract the code layer a bit. For quite a number of systems that I deploy to an average datacenter, I already have Ansible playbooks written to handle that work. My actual time involved in deploying standard network monitoring applications and tools to a new datacenter went from hours to less than five minutes. For the purposes of this post, I’ll be speaking more to the Python/Scripting side. However, the important point is not necessarily which toolset you choose – it’s the fact that you try to use any one of these tools or others to automate something.
Stick with it
Learning a scripting language at first might seem like a very unnecessary and time consuming task. However, this is something that will pay off in the long run. When I started learning Python, all I wanted to do was parse data from several CSV files and combine the necessary data into one large file. Stupid simple script, but it saved me half an hour each day for a previously manual task.
I’m not at all a fantastic developer by any means, nor would I want to write code for a profession. I just really enjoy problem solving, and sometimes the best way to solve a problem is with a bit of custom scripting. What gets me excited is the process of finding something that wouldn’t normally be possible and knowing that I have the skills and ability to make it happen. Over the past five years, my basic level Python abilities have enabled me to work my way through a number of problems – or write various scripts to make my job easier.
You’ll need to dedicate some time and put in the effort up front to learn a new skill, but trust me it will be worth it.
Look for New Opportunities
Once you have learned the basics, start looking for ways to use your new skills. It’s a different way of thinking in some cases, and will likely take a bit of adjustment. Whats that? Your load balancer doesn’t have built-in reporting functionality to tell you how many server pools you have (and how many are actually fully functioning vs degraded)? Yep, they probably have an API which would be easy enough to pull that data from.
Over the years, I’ve built scripts to automate load balancer configurations, generate reports, alert on BGP peering changes, auto-remediate IPSec VPN disconnects, and even a full IPSec VPN dashboard (since the vendor doesn’t supply one). As a network administrator, having the automation skills in Python has allowed me to accomplish many tasks that my co-workers have stated aren’t possible (solely based on the functionality not being native to a product). Sure, I spend a bit of time up front writing and testing out scripts – but it not only saves me time/effort, but also my peers who I share the scripts with. For example, my team used to have a maintenance task that would take a full hour to complete on a monthly basis. About a week worth of my own effort to write a script, and all of that work is now automated into a 30 second process.
Think about how automation can help not just you, but your whole team.
The Future of Networking
If you follow practically any news source for computer networking, I’m sure you’ve heard this already. Over the next few years the role of a traditional network administrator can and will change. Businesses are evolving more rapidly to meet customer demands, and we need to ensure that our networks can keep up. The only way this is going to be possible is through automation, or hiring an ridiculous number of people.
Practically all major networking vendors are integrating APIs into the new iterations of their device platforms. Some are fantastic, and some are less than ideal – but they’re all working on it. In some way or another these new APIs will become a part of your job – whether you’re writing the code to perform tasks or just using a script written by someone else. Does this mean we have an end to our careers in the future? No – the CLI will take a while to completely disappear. Even if it does go away completely, the role of a network admin will not be replaced, but evolve into something a bit different from what we know today. Even today, having the skills to automate tasks out of your daily job can allow you to spend your time on more important things (like a new network design, or that big project you haven’t had time to look at yet).
You can probably get away with not learning scripting and automation for quite some time yet – but don’t you want to make your life easier and be prepared for the future of your career? I know I do.