Primary drivers for Network Automation
The automation adoption process is specific to each business. There’s no one size fits all when it comes to deploying automation, the ability to identify and embrace the approach that works best for your organisation is critical in advancing towards maintaining or creating a more agile environment, the focus should always be on business value and end-user experience. (We said something similar right at the start in regards to the whole of DevOps and the culture change and the automated process that this brings)
To break this down you would need to identify how the task or process that you’re trying to automate is going to achieve and improve the end-user experience or business value whilst following a step-by-step systematic approach.
“If you don’t know where you are going, any road will take you there.”
Have a framework or design structure that you’re trying to achieve know what your end goal is and then work step by step towards achieving that goal measuring the automation success at various stages based on the business outcomes.
Build concepts modelled around existing applications there’s no need to design the concepts around automation in a bubble because they need to be applied to your application, your service, and your infrastructure, so begin to build the concepts and model them around your existing infrastructure, you’re existing applications.
We should identify the tasks and perform a discovery on network change requests so that you have the most common issues and problems to automate a solution to.
We should then divide tasks and analyse how different network functions work and interact with each other.
Reusable policies, define and simplify reusable service tasks, processes and input/outputs.
Combine the policies with business-specific activities. How does implementing this policy help the business? Saves time? Saves Money? Provides a better business outcome?
Iterate on the policies and process, adding and improving while maintaining availability and service.
Orchestrate the network service!
The good news here is that for the most part, the tools we use here for Network automation are generally the same that we will use for other areas of automation or what we have already covered so far or what we will cover in future sessions.
Operating System - As I have throughout this challenge, I am focusing on doing most of my learning with a Linux OS, those reasons were given in the Linux section but almost all of the tooling that we will touch albeit cross-OS platforms maybe today they all started as Linux based applications or tools, to begin with.
Integrated Development Environment (IDE) - Again not much to say here other than throughout I would suggest Visual Studio Code as your IDE, based on the extensive plugins that are available for so many different languages.
Configuration Management - We have not got to the Configuration management section yet, but it is very clear that Ansible is a favourite in this area for managing and automating configurations. Ansible is written in Python but you do not need to know Python.
Link to Ansible Network Modules
We will also touch on Ansible Tower in the configuration management section, see this as the GUI front end for Ansible.
CI/CD - Again we will cover more about the concepts and tooling around this but it’s important to at least mention here as this spans not only networking but all provisioning of service and platform.
In particular, Jenkins provides or seems to be a popular tool for Network Automation.
Version Control - Again something we will dive deeper into later on.
Language | Scripting - Something we have not covered here is Python as a language, I decided to dive into Go instead as the programming language based on my circumstances, I would say that it was a close call between Golang and Python and Python it seems to be the winner for Network Automation.
Analyse APIs - Postman is a great tool for analysing RESTful APIs. Helps to build, test and modify APIs.
Cisco NSO (Network Services Orchestrator)