In the first four parts of What did you Expect, we covered the basics of getting started with automating interactions for network equipment. In the first few posts it was important have a networking environment that was 100% stable. The last thing I needed when I was trying to learn to use python to automate network devices that were randomly unresponsive and would crash my code. In order to accomplish that I built a test network you can read about here in GNS3, created a basic configuration to enable a IOS device to be remotely managed. I also wrote a quick multi-device ping tool to verify that all the devices are responsive before we run remote code against them. I made my life easy. But as all operators know our lives are not that cut and dry. So I started to break things…and my code did not like me. Read more
So lets start off with I am an old dog and I am learning new tricks. My entire career I have avoided the dreaded programing. In college I slid by my degree requirement for a coding class by taking Visual Basic for Industrial applications. I hated it. Debugging drove me nuts and there is still a hole in my bedroom wall at my parents where that brick of a VB found itself one night around 2am. From there I was just gun shy and honestly had plenty of other things going on that could afford to ignore learning anything outside of the basics of HTML and CSS.
Cut to today, I am in my late 30’s and going through a career transition of sorts. My timing for the transition is decent because the network industry is also going through a bit of a transition. For awhile now all the cool kids have been doing automation and Dev/Ops in the Server, OS and application space. But networks are trickier. I will leave out all the discussion of why because that horse has been beat dead a few times online. In this transition over the past six months or so I have found myself doing things I would never have guessed even a year ago.
So what types of things you ask. Ok for one I am now doing dev work. Mind you it is not great dev work and I will never be a professional developer but I have been writing code. In one case even some minor code for a library that is now in production with clients…scary huh. But mostly I am coding to learn and help move other people along the Path to Automated Networking including myself.
So far so good. In Part 1 we connected to a Cisco switch and and performed basic Authentication with Expect. Part 2 we expanded on that and added configuration to our code that added a VLAN and configured an interface. But as I have already stated we are writing quite a bit of code just to configure a single switch. So the next step is to add multiple devices and flat files. I mean yeah we could setup a static list in our code and add our devices to that but why? Our real goal here is to create functional code that we can use to do real things in real networks. So that means pulling a list of devices from NMS, IPAM or even our nasty old excel files. Plus this helps us address the idea of adding authentication files and other flat file resource pools. Eventually we will transition the use of flat files into databases so we can do even more cool stuff but we will hold off on that for now.
When you setup to learn new things you are bound to get a bit sideways once and awhile. With writing code I think that is even more the case. You start out with an idea and if your lucky like I have been so far it starts to flow and things just work. But in the spirit of learning in manageable chunks and sharing the experience with you I started targeting a single host. When I tried to make the leap to multiple hosts things got interesting. Along with that it became clear that these posts were going to get messy quick. So lets clean all that up and move on to the cool stuff. Read more