We established in STEP FOUR that once you learnt coding, you need to keep doing it to get the value. It is not much different with Git either. In this article I’d like to show you a couple of examples what’s the real value of Git in my everyday life.
- Using git is powerful.
- Developing quality network automation tools without Git are extremely difficult.
- Git allows you to experiment without the fear of losing the original code.
- It’s the foundation of collaborating in open source projects, be prepared for this shift in network engineering.
I love git as it allows me to be very productive. The other day I started restructuring one of my projects. I re-written an SQL query to get private AS number allocation from a database. Unfortunately I forgot what the exact query was before I started changing things around, so I wanted to go back to the original state to check it. A quick
git stash, check,
git stash pop allowed me to do it without ant pain. It’s a great thing I don’t have to remember for everything, as stores the previous state. As long as I know how to use it, I am safe that things won’t get lost.
I worked on a small project that would validate if a customer service was configured with the proper routing policies. When I wanted to share the code with the team, it wasn’t so easy. Even if I gave them a copy via a zip-file, very soon they asked for modifications. Sometimes they wanted to make the modifications themselves. Sharing the changes gave me a headache, so we decided to keep it on the jump host, so everyone could access it. While someone was polishing the checks, it could not be used as it could have been broken while the changes were being made, tested, etc.
Once I started using Git, most of these problems vanished and we could focus on the work, rather than dealing with the logistics. We could work on improvements without blocking each other.
Over time one of my projects evolved to a standalone portal, which helped speed up customer provisioning. We supported two platforms, three products in two regions at this time. As the tool had a fairly big user base, we needed to create a release process for continuous improvements. When we got to a stage that we could make the new features available to them, with the option to roll it back easily. You create a snapshot of your code and apply
git tag, which will say – this is release 1.2. If we need to use the code in this specific state, we just simply check out this tag.
My Vision of Network Automation
If you follow the PacketPushers podcasts, you often hear that today everyone writes their own script, even if another hundred people have saved the same problem and keep it on their local servers in complete isolation. There are many reasons for this but in my opinion these are the the main issues:
- Engineers learn coding, but not learn Git, so they don’t know how to share
- People don’t know where to find tools made available by others
- Poor or Lack of documentation
- Beginner coders write inflexible code hence the re-use is limited
- For an individual it seems less effort to write something from scratch than try to find a similar project. It is likely that similar solutions may not even be publicly available on GitHub or other code repository
On the last point – it may take you half an hour to solve something. But if 300 people replicate very similar work so many hours was wasted. If people work together on it for a couple hours, the solution would be better and others just simply use it and save time.
You probably heard of open source network monitoring tools such as Cacti or Observium. Great tools that could not have been done by an individual person.
My dream is that Network Engineers become competent to re-use code and will be able to contribute open source projects. This will result in a large boom and productivity will increase exceeding all the expectations. I can see it already happening with Napalm, Ansible modules and Salt.
what shall I do next?
You can be part of that and make the dream reality. Plenty of open source network engineer tools are available in GitHub. It is amazing place where you can share your code, learn about how others structuring theirs and you can even contribute.
Even if you’re not an experienced coder, you can instantly help by extending an open source project’s documentation or adding a couple of usage examples. This way you grow and gain experience by getting to know a new tool as well. You’ll also practice your Git skills.
I list a few projects below that’s worth to take a peek, if you know any other repository that you think should be included, please send it over to me or add a comment.
Network Automation and Programmability Abstraction Layer with Multivendor support
A highly extensible framework for distributed capacity and connectivity testing (Distributed!!)
Network Source of Truth is an open source IPAM and network inventory database
Don’t miss out and stay motivated by subscribing to email alerts (right on desktop, bottom in mobile) or like our Facebook page.
Till next time…