Greetings!
Unfortunately, the time allocated for the project is coming to an end. In this post, I would like to summarize the work which was done, how it started and express thoughts about future plans.
At the current time, I am writing a final report and thinking about the poster.
First of all, a black box where a topic of network automation located was opened and an investigation of what inside is not completed yet.
How did I begin?
Before the project, the topic of network automation was somewhere in the background because it was inappropriate at that point in time. Initially, I had a completely different idea for the final project which is related to cloud technologies and developing cloud infrastructure.
By some coincidence or curiosity, I was watching some videos on YouTube and came across an interesting video about a free Cisco VIRL server on Cisco DevNet from David Bombal (https://youtu.be/S0jfZLobFdU).
In general, Cisco VIRL was familiar to me but about Cisco DevNet (https://developer.cisco.com/) that was the first time I have heard it. I thought, cool! I can do labs to recall some things and to experiment with something new. I did not have enough compute resources on my laptop to virtualize large network topologies. After that, I have looked at the Cisco DevNet. At the first time, I realized that it was not mine because there was information which applies to Data Center networks, where Nexus switches, something about SDN controllers, etc. It is too early for me to go there — I said to myself and continued to dig into Cisco VIRL building some topologies of CCNA level and swearing that everything lagging because that sandbox exists on the other side of the world.
After some time, again watching videos, I found something that completely changed the idea of the final project and a black box appeared on the horizon named as network automation.
That was a video from Hank Preston (https://youtu.be/s3iDm0Mw-YE) about NetDevOps. After watching it, I asked a question: Where have you been before?
A set of tools for network engineers/programmers that was shown by Hank completely unknown to me. A CLI and SNMP were my main tools at that time and thought that were enough and that is OK. How wrong I was! That video opened my eyes to many new things. From that point in time, network automation has come and become the final idea for the student project.
Starting point of the project,
http://www.netascode.com.s3-website-ap-southeast-2.amazonaws.com/1
How did it end?
The objectives of the project were self-education, practice, an attempt to add something new and improve the topic of network automation. Also, to show where are pitfalls that I picked so others would avoid them. The main goal was an interaction (output) of the main components of the NaC model with the enterprise network. The network and the company were imagined for the practical part.
A network OS such as Cisco IOS, Cisco ASA, JunOS, and VyOS were used to prove a vendor-agnostic approach of the chosen main components. Components may be different that depends on network requirements.
The results of the work are displayed in the blog, source files on GitHub, on YouTube and in the final report.
GitHub contains files of fictitious company ‘X’ network as code. Anyone can try and practice with ready ansible-playbooks, network verification test, etc. to understand and learn how all the components work together, bring new ideas and find mistakes. The biggest limitation of the project was time which was always not enough to improve or extend something. Also, my knowledge of programming and networks. By now, I will not recommend best-practices how to do because there is still a lot of work. Since the network and the company were not real, that is not completely clear how this will work in a real environment.
The next step should be a test in real conditions in a real company and on real equipment. It is important to pay attention to which devices are supported in the official documentation for ansible network modules, napalm, and pyats.
Future improvements/ideas/research:
- Ansible vault for playbooks
- Authentication on network devices using ssh-keys for workstation and GitLab runner
- Team work (how some Network Engineers team can work together)
- Development environment on-demand and independent for each team
- Performance and Scalability
- Chaos Monkey
- NetBox automation
- New network verification tests
- Points of failure