I started my post by going through a description of the network automation meaning, and I realised that Internet is plenty of posts with the exact same information. You can do a search at Google and will find many different sources, therefore I thought that it is pointless to go through all that again. Instead, I will just highlight what I think we, as network engineers, should take into account before automating anything at work and what my opinion is about whether we would need to code or not.
As network engineers I believe that the more you learn about coding these days the better chances you will have to get a good job. Yes, there are plenty of companies out there that are not implementing any sort of automation, which is great for those falling behind, but as time passes company trends to change and it will be more valuable someone who can automate tasks rather than someone doing all manual. Having said this, I also think that not everyone need scripting/coding skills, many automation tools are easy enough so you don’t need to have deep coding skills.
If you are willing to explore network automation, here are some points that I believe are important to take into account:
1 – first point and one of the most important ones from my point of view, be business oriented. We have networks because of businesses, and their services are what matter the most, what it gives revenue. Infrastructure is there to support it, as business and applications evolve so do the technology to help them: more powerful switches, routers, firewalls, bigger data centers, intelligence WAN, etc. if a switch is down “it doesn’t” matter as long as our service is well protected by implementing the required mechanisms.
2- See what tasks you repeat more often, focus on them to implement your first automation pieces. Perhaps you want to avoid building a script for a 1 line command that you do every 2 months, but if you implement firewalls rules, create VLANs, routing changes etc, you may consider it.
3 – Keep it simple. The bigger your code is and the more tools you use the more complicated the troubleshooting will be, and this is precisely what we were trying to avoid. Keep away from having a thousand different tools and/or data sources.
In regards to the level of automation, I haven’t found an agreed description of them, depending on the source you will find one level or another. As an overview and as of April 2020, we can describe the following levels:
- Level 0: No Automation at all. Manual configuration.
- Level 1: Scripted. Scripts are made by individuals for individuals. Trigger based.
- Level 2: Tooled. The automation task is made available to others. Rule based.
- Level 3: Orchestrated. Orchestration organizes and leverages a library of scripts to complete more complex workflows.
- Level 4: Auto-triggered. Asynchronous Autonomous operation via Virtual workforce. Automation as a Code.
- Level 5: Assisted. Virtual assistant. Remote control Interact with the Virtual workforce via GUI or CLI. Synchronous.
- Level 6: Intelligent Automation (Contextual). Machine Learning /System behavior and stats. // Artificial Intelligence (Self-Aware). Learn and adapt in order to act as a human.
Depending on the automation type and vendor the above clasification can vary. For example, in Intent-Based Networking (IBN) solutions, we could talk about 3 different levels: Level 0, which implies a basic automation; level 1, where we define our single source of truth; level 2, with real-time and change validation, and level 3, where the network is self-operated.
I will go in depth through some of these levels to see what tools are today in the market and what could we use in our network.