Getty Images/iStockphoto

Tip

A guide on how to learn network automation

Networks are always evolving, and network automation is the next step forward. From soft skills to AI, these skills are essential to understanding network automation.

The traditional wisdom is true: Networking requires lifelong learning and constant adaptation to change.

Networks are always changing. From simple serial interfaces to software-defined WAN to AI, network automation is merely one step in the ongoing journey of any networking professional. Each of these changes has required learning new technologies. Automation fundamentally changes how professionals configure and manage networks. With networking and automation now thoroughly entwined, professionals must learn new automation skills to be effective in this era of networking.

Necessary network automation skills

For network automation adoption to be successful, ideally, the entire organization works together. Even if the whole team isn't well versed in networking, they can learn simple skills that don't create network configuration risks or errors.

Learning automation skills is no different than with other technologies. There is a broad continuum of network automation skills and technologies, so it's best to start simple and progress gradually toward complexity. Where you start depends on your current level of expertise.

Some automation skills don't require programming expertise, while elementary knowledge of software terminology is necessary for others. Those with advanced skills must understand programming and software development methodologies, but programming skills aren't always necessary for automation.

Soft skills

The likely starting point for most networking people is developing soft skills. These are skills that don't require software development expertise.

First, change the way you think about network configuration, monitoring and troubleshooting. Part of the mindset change is accepting automation adoption as an investment. Set aside time to learn new tools and methods. This can be difficult for busy organizations, but even incremental progress is progress. Network staff can make progress by setting aside as little as an hour per day to sharpen their automation skills. To start building up automation skills, take the following steps:

  1. Look at the overall network. Where can you use automation to take over manual processes? Automation is ideal for taking over time-consuming and repetitive tasks. Even automating tedious or error-prone parts of a process can save time and produce results.
  2. Create processes for common tasks. Identify and document processes and tasks where automation is easily applied. Information collection, such as a postmortem network problem analysis for problem source identification, might benefit from automation. Automating information collection and analysis is a valuable way to reduce time and quickly identify the source of a problem.
  3. Build skills around existing tools. Configuration validation and configuration update functions already exist within network management system tools. These tools frequently enable networkers to achieve automation goals without programming.
  4. Create a network source-of-truth repository. Network configurations can change as failures and ad hoc changes occur. A source of truth validates the network's operational state without relying on its configurations. Identify the critical infrastructure interconnections on each network device, and document them and their services. The source of truth should identify misconfigured port channels or incorrect cabling.

Scripting

Creating useful automation systems doesn't always require programming. Some tools provide UIs that automate network configurations without any programming. Further, some equipment vendors have tools to simplify their equipment's configuration.

After soft skills, learning scripting is the next step in your automation journey. Ansible is useful for learning how to use a script-based system. Written in Python -- the principal automation language -- Ansible's control language is more like network configuration syntax than a programming language. With Ansible, simple scripting and configuration creation are easy. A variety of Ansible's functions are useful for automation, including the following:

  • System configuration management.
  • Process orchestration.
  • Application deployment.
  • Provisioning.

It's also helpful to learn how to use a web-based source code repository, like Git. GitHub, GitLab or an equivalent central repository where developers can store source code and collaborate on and test it is ideal. You don't want to find yourself in a situation where the latest working script is overwritten with a newer version that doesn't quite work.

Software concepts and development skills

A basic understanding of software is a valuable skill, even if you're not writing software. Read basic articles, and take a free, online programming class to learn software development concepts. These should teach basic concepts and terminology for talking with software developers. Terms to understand include the following:

  • Refactoring.
  • Idempotent.
  • Iteration.
  • Looping.
  • Conditionals.
  • Lists.
  • Dictionaries.

If you've never written any software, check out Hour of Code. Some software development fundamentals you learn as you advance include algorithms, data structures, data models and abstraction.

Abstraction is particularly important to learn because it is how software is constructed. Device model abstraction is how network automation controls multiple vendor devices.

Learning how to develop software is the next step in network automation growth. As mentioned earlier, Python is automation's primary programming language. Many free or cheap sources are available to learn Python. One technique is pair programming, in which a pair of software developers work together. For example, a networker and a developer pair together, helping networkers learn software and developers learn networking.

You can check the produced code's quality through automated testing. It is easy for new developers to create bugs that are challenging to diagnose. Automated testing is a software development methodology where developers create and test alongside the software. Automated testing is a step to continuous integration/continuous delivery. CI/CD runs comprehensive tests whenever a new code or network configuration is checked into the code repository. Once the updated code passes all tests, it is ready for manual or automatic deployment.

AI and automation

Recently, AI has been touted as the future of networking. Though AI isn't new, its rapid evolution has made it noteworthy. Networking pros are still figuring out how and where to integrate AI into networks, and automation is a viable starting point. Not every network uses AI, but learning how to use AI tools is beneficial for strengthening automation skill sets.

AI integrated with automation can find and remediate network problems. In some cases, AI can fix network problems on its own without any human interference. However, some network problems are too complex for AI. AI tools can be programmed to alert professionals if a human hand is needed to address the network problem.

Editor's note: This article was originally written by Terry Slattery and updated by editors to reflect industry changes and improve reader experience.

Terry Slattery is an independent consultant who specializes in network management and network automation. He founded Netcordia and invented NetMRI, a network analysis appliance that provides visibility into the issues and complexity of modern router- and switch-based IP networks.

Next Steps

NetOps automation ideas and examples

Compare network automation tools

Batfish use cases for network validation and testing

Reasons to build and buy network automation tools

Best practices for Cisco pyATS test scripts

Dig Deeper on Network management and monitoring