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.
In this session of A Few Easy Steps, we will be doing the initial setup for automation on a Cisco IOS Device. In General this will work on any Cisco IOS Device. Session Prerequisites:
- You have a Cisco Console Cable
- You have a serial port
- You have a Terminal Program that you can access your Serial Port
- Hostname is already set
- Domain name is: SPC.DEV
- RSA modulus is 1024 bits
- Our Admin interface is: FA0/0
- The Interface has already had its IP Address assigned
- Enable Password is: password
- Username is : pytest
- Password is: pytest
- We are using VTY ports 0-5
Our goals of this session are:
- Setup IP Domain Name
- Create RSA key for SSH
- Set Enable Password
- Setup Username
- Setup Password
- Turn interface FA0/0 on
- Enable SSH on VTY 0-5
- Set Login to Local Authentication
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.