DON’T DABBLE YOUR WAY FROM NETWORK ENGINEER TO NETDEVOPSAfaq Khan
Before we go into what, where and how to get started, let me address one crucial topic which is the proverbial elephant in the room, i.e. job security. I can’t tell you how many times have I heard that network automation will take my network admin or network engineering job away? Well, there is no doubt that software is eating the world one vertical at a time. Now, if you combine software with cloud, you get the picture.
Having said that, I can almost assure you that network automation much like server automation will not do away with your job. However, with major shifts underway where networking infrastructure is getting commoditized, dis-aggregated and software-based, you have to be ready to reskill yourself to take advantage of this new opportunity. What am I talking about? If you can envision this positively, your job is not at stake, but it is simply evolving, again much like going from sysadmin to a devops engineer.
There is another sort of selfish reason to be cheerful if you’re committed to continuous learning and being less cynical. Because no matter how much shouting from the rooftop takes place here, it is beyond doubt that not every network engineer out there will make this transition and most definitely will witness his job getting automated away! How do I know? This is exactly what happened to system admins who refused to learn Devops technologies and adopt a more collaborative culture when it comes to working with the development and QA colleagues. Anyhow, if you frame this shift positively in your head, learn and adapt a more collaborative mindset, you will become part of the few who will see better compensation packages in the new market due to higher demand and limited supply.
In this video, I will go over why and how you can transition your skill set from one of being a network engineer to a NetDevOps.
Now, if you’re still with me, I have another good news to share with you. Transition from system admin to devops took place over a span of about 8 years or so (source), and if you allow me to extrapolate, you should have about 5 years from now to reskill yourself from a network engineer to a network automaniac, I mean a network automation and tooling engineer aka NetDevOps. In my opinion, 5-year is the timeframe when most network engineers would identify themselves as network automation engineers or NetDevOps. BTW, what I mean here by NetDevOps is where generalist skill set, and organizational IT silos of compute, networking and storage get fused into each other. Notice the word “generalists”, because specialists with deep knowledge in each of those areas will almost always be needed. It could happen earlier given the fact that we already have the Devops tools around, but obviously incumbent networking vendors will drag their feet as usual.
Now, if you are committed to making this transition, here is a practical step by step approach that you can use to help yourself.
- As sort of baseline, you should have some know-how of Linux and open source software.
- To get started, you need to develop some know-how of Python. Now before you jump, python programmability skills needed for network automation are more at a level of scripting or front-end coding and not some deep hole backend stuff. The only exception to this would be if one day you plan to write your own python library for automation. In fact, with more third-party libraries and vendor-based APIs coming to market, level of programmability needed for automation will only become simpler and perhaps give way to automated AI-driven automation, but I digress.
- It is crucial to not lose sight of the various components of the NetDevOps paradigm. Those are:
- Infrastructure as Code
- Automated Delivery Pipeline
- Configuration Management
- Continuous Integration
- Automated Monitoring & Health Checks
Now, for each of those 5 areas, there are multiple tools and platforms that you need to learn.
- For automation, you will use Git (or GitHub) as your source code repo and version control system. For continuous integration purposes, tools like Jenkins (or Travis CI) can be used.
- For configuration management, you can use Python or Ansible to generate final device specific configuration by using Jinja2-based configuration template where the actual configuration data comes from YAML file. YAML can also be used for expressing Ansible playbooks. Ansible tower uses Git for version control. While this level of modularity may sound complex, it makes it much easier to deal with non-machine readable or unstructured IOS or Junos configuration files. During the pre-automation era, we used various scripting languages such as Perl to scrape configuration text and that was a nightmare if you want to make changes at-scale.
- Once you are able to write small scripts using Python to automate simple tasks, you can move to using third-party modules or libraries such as Netmiko, Paramiko or Napalm to easily push/pull configurations.
- Finally, you can move to using RESTCONF and NETCONF APIs and specific vendor libraries which are mostly written in python as well.
In the end, don’t let this list or jargon intimidate you. Remember, there was a time when you didn’t know IPv6 or MPLS or Traffic Engineering or perhaps even multicast going back in the days, but you were able to learn all that stuff. With network automation, you’re finally climbing the OSI stack ladder if you will, you have spent a lot of time mucking around with L1 to L4, now it is time to climb upwards and round out your skill set by treating infrastructure as code or an app.
Last but not least, subject matter discussed in this post, as well as others, is covered thoroughly in various online courses offered by Full Stack Networker. Please feel free to share your questions or comments, I will be answering them over the next few days.