Network automation - how to start?
I don’t talk much of my work in this blog and won’t go in the details here. In my role Technical Evangelist, one of my mission is the field enablement: transfer of knowledge from engineering, best practices as well as training on “adjacent technologies” i.e. technologies of the ecosystem our products fit in.
One of my current activity is to build a curriculum to our Solutions Engineers on Network Automation.
Network automation has been very trendy and it is highly recommended for all people working in the networking field so to save time on repetitive operational tasks and have more “bandwidth” to take care of new projects.
You will find an endless list of websites offering you courses on the topic. And I am not going to start one myself. I have added a list of references at the end of this post for your convenience.
Reality is that programming is frightening for many of us networking people and there are many strange names: Ansible, Python, NetConf, YAML, REST API, Git, CI/CD… So where do we start?
Ansible is super powerful and you can find a lot of cool modules. I believe the level of complexity is pretty high though; to be able to achieve what you really want, you will spend a lot of time and the learning curve is not that fast…
I would start with Python. You will find a big community to help you on that and it is a language pretty straightforward. You will learn quickly and your sensation of achievement will be much greater.
Many network engineers go crazy and believe they can quickly become software engineers. Probably not…
I have a software engineering background and I have always been programming so I have been using those tools. I recommend you to get those tools after several months of practice.
I recently discovered Jupyter notebooks and this is what I highly recommend our Field to use.
It is a great tool to learn and play step by step. You can install it on your machine or better you download a Docker container to play with it!
As you probably know, a container is a lightweight Virtual Machine that contains all the packages you need and is running on top of your computer.
Why running in a contained environment? Because it will make your life sooooooooo much easier. Even more when you start! You will have a fresh environment everytime you want. You don’t mess with your laptop’s OS and some nice people prepared everything for you. And more importantly, you don’t have to become a Docker expert….
- First step: install Docker on your system https://www.docker.com/community-edition#/download
- Search the image you want to use on Docker’s store. This one will do the job.
- Pull the image and start it as explained in the documentation
- Make sure to start the container with the option -v to mount a volume on your laptop and not lose everything when the container is restarted….
Now you can copy paste the URL into your browser and enjoy working with Jupyter.
You can upload existing Notebooks that you can find on the Internet, you can start a terminal to get access to the container system and import whatever library you need and finally create a Notebook…
So why am I recommending to use Jupyter for beginners?
The cool thing is that you can mix text and code and execute that code step-by-step checking the result of each operation! This is super powerful when you start learning how to program. You will make very quick progress using that approach.
Want to learn more and start messing around?
Here is a list of sites you can check on the topic: