Note: I may receive commissions for purchases made through links in this post. This is to help support my blog and does not have any impact on my recommendations.
The future is APIs! SD-EVERYTHING! Automation! Orchestration! Artificial Intelligence and Machine Learning!
Sound familiar? It’s all part of the messaging going around in just about everything IT-related. With as much as you keep hearing about it, you might think that it’s all anyone is doing anymore. Yet it still just seems like not a whole lot of people are really getting into it in my area. Every vendor event I’ve gone to this year has asked attendees the same questions: “How many of you are leveraging the APIs in your network hardware/software?”. And every time the same answer – maybe two or three people in a room of 40 raise their hands.
So where is the problem? Is all of this just marketing fluff or am I just talking to the wrong people?
Let’s think about this from a typical network admin’s perspective. Shifting from traditional CLI to automation and APIs can seem difficult or overwhelming. Let’s say I want to automate a new VLAN deployment. Oh, you’re telling me I need to stop and learn vendor APIs… but before that I need to understand how to write scripts. But I’ve never even programmed something before. There are dozens of languages – how do I pick one? How much fundamental programming knowledge do I really need to have before starting? I don’t want to be a developer!
Okay, okay – just stop there for a second. No one is asking you to drop networking and write code for a living. The end goal of all this programmability stuff isn’t to turn networkers into developers – It’s to enable network/systems admins to be more efficient at their jobs. Why copy/paste the same config change to 100+ devices, if you can mass-deploy the change via an API? That’s a lot of time savings that could be used toward educating yourself on new products, planning other projects, or thinking about your ideal network design.
I’ve heard a lot of the same things over the past few years:
- “Programming is difficult” or “I don’t know where to start”
- Try learning Python. It’s simple to get started and you can build from there.
- “I don’t know what an API is or how to use it”
- Don’t worry about that yet – start with learning the basics and APIs will make sense later.
- “I’m not a developer”
- No one is asking you to be one! But learning the basics of scripting and automation gives you a whole new toolset to solve problems.
For me personally – I would never want to be a developer. I can’t stand the thought of coming into work every day and just writing code. Some people might enjoy that, but for me it doesn’t sound like fun. However – I enjoy writing scripts to solve problems, especially when it ends up making my job easier. I think that’s the part where some people tend to get stuck though. A lot of automation sounds like I need to be able to develop a huge 10,000+ line application to pull data from 15 sources and aggregate it to make intelligent network changes. Ehhh… Nope, not really. But what about just a quick script that runs every 5 minutes to check an interface statistic, and email you when a particular threshold is exceeded? Realistically that could be done in less than 50-100 lines of a script and maybe 30 minutes worth of work.
Still not interested? That’s okay too. Traditional networking isn’t going away any time soon, and over time the vendors will write all of that automation for you. They will package it up in a pretty GUI and sell it off to companies that want it. In fact, this has already happening and has been for quite some time. This isn’t a bad thing – vendors need to make money, and not all companies will have the time or skilled resources to automate all the things. However, a network admin who can write their own scripts/automation won’t be exclusively tied to a vendor to help them – and instead they will be empowered to solve more problems themselves.
Where do you get started? I already wrote a bit earlier this year on a few resources for learning Python – which you can find here. I also wanted to point out some other great resources that are a bit more specific to using those skills for network automation:
Python For Network Engineers – Don’t know anything about Python yet? Start here! This is a free course provided by Kirk Byers for anyone who is interested in using Python for network automation. Once a week you’ll get an email with all the great free content, but it will be up to you to spend time going through it. Go sign up, and set aside an hour or two each week to practice.
Cisco DevNet – There is a ton of great content here. While DevNet does offer some tutorials on basic Python fundamentals, the real value here is examples on how to use some network APIs (NX-OS, Meraki, UCS, etc). Also – one of the best parts about DevNet is the sandboxes they offer. Want to write scripts against the FirePower Management Center, but you don’t have one to test with? Well with DevNet you can get access to one! Get familiar with your Python basics, then come here to see where you can start using those skills with your existing infrastructure.
Network Programmability and Automation – This is a fantastic book. Not free, but it is well worth the ~$30. Once you have a good handle on how to write some basic network automation with Python, I highly recommend picking this up. While Python is covered here, the book does a great job of introducing you to all of the other toolsets available. Curious about how Linux or Ansible fit into network automation? You can find out here – and learn about APIs and source control systems too!
So – What are you waiting for? Go get started, and see what you can accomplish. Learn the basics – and keep an open mind for opportunities to use those skills.
Have suggestions on where else to learn? Comment below!