Author Archives: Matt Oswalt
Author Archives: Matt Oswalt
Popular development methodologies like Continuous Integration are usually accompanied by some kind of automated workflow, where a developer checks in some source code, which kicks off automated review, testing, and deployment jobs. I believe the same workflows can be adopted by network engineers.
Let’s say you are the Senior Network Engineer for your entire company, which boasts a huge network. You don’t have time to touch every device, so you have a team of junior-level network engineers that help you out. Let’s say you want to offload the creation/deletion of DHCP reservations to these junior engineers, but you still want to be able to approve all changes, just as a last line of defense, and a sanity check.
For this, I’m gong to show you how I’m managing my own home DHCP server (ISC) with Gerrit, Jenkins, and Ansible.
I mentioned in a previous post that version control is an important component of efficiently managing network infrastructure. I’m going to take it a step further than what most are doing with RANCID, which is traditionally used at the end of a Continue reading
When I started this post, the following mental image popped into my head, and I found it an apt description of 2014:
Doing the year-end recap post. 2014 was all: pic.twitter.com/aXtC2sjN8l
— Matt Oswalt (@Mierdin) December 30, 2014
Oh well…..let’s give this a try anyways.
I’ll list off the goals I set in my post one year ago, and reflect upon how they were pursued in 2014:
Write Code – I knew when I made this goal that it was going to be hard to quantify; I just knew that writing code was something I had been passionate about. Though I have always maintained this skillset in some form or another, I knew I wanted more, and a year ago, I made the goal of increasing my involvement with software development.
In 2014 I made two more contributions to OpenDaylight, specifically pertaining to the Unit Testing and Integration Testing efforts of the OVSDB project (much thanks to Madhu Venugopal and Dave Tucker for their unrelenting patience while I stumbled through Junit fundamentals). I also did a lot of work on various projects, like Ansible and Schprokits extensions, as well as standalone projects, all of which are Continue reading
In talking with folks about automation, the conversation almost always come around to “speed, speed, speed”. It’s easy to see why this is the first benefit that pops into mind – we’ve all spent gratuitous amounts of time doing repetitive, time-consuming tasks. It’s obvious why the prospect of automating these tasks and getting the time back is such an attractive one, even though most of us that have tried know that this is an absolute reality:
All kidding (but some…..seriousing?) aside, is speed the only benefit? In the realm of IT infrastructure, should we pursue automation only when this other piece of brilliance tells us it’s worth it?
Consider a small deployment of a few switches, a router, maybe some servers. Using manual methods to configure the relatively small amount of infrastructure isn’t really sexy, but it’s also not a huge time suck either. There’s just not a lot of infrastructure in these small deployments, and manual configuration doesn’t really impact the rate of change.
As a result, when discussing automation concepts with small, and even medium-size shops, I’m usually met with understandable skepticism. There’s a huge part of IT industry that assumes that all of our Continue reading
I’m always on the lookout for ways to simplify the configuration of integrated systems through automation. I also currently work for a systems integrator, and I take any opportunity I can get to automate a process, a la “assembly line”, creating a consistent, predictable outcome.
One particular task that both integrators and customers alike are having to do manually is the act of Fibre Channel Zoning. For those that aren’t familiar, Fibre Channel doesn’t work in the same way that Ethernet does (i.e. Flood and Learn). In order to get two nodes to communicate over a SAN fabric, a configuration must be put into place to allow them to talk – roughly equivalent to a Layer 2 ACL. Each server’s HBA must be given permission to access a storage target on the fabric, which means that any time compute power is added or removed, this configuration needs to be revisited. This is a prime candidate for automation.
This article will show how I am using Schprokits to simplify zoning configuration. I am tightly adhering to the idea that this kind of information should be pulled directly from live infrastructure (in this example, I’m using Cisco UCS), not a (usually) stagnant spreadsheet, or Continue reading
I mentioned in a previous post that version control is an important component of efficiently managing network infrastructure. I’m going to take is a step further than what most are doing with RANCID, which is traditionally used at the end of a workflow (gathering running config diffs) and show you what it’s like to start with version controlled configuration artifacts, specifically using Ansible’s “template” module.
I’m not going to discuss how you get the resulting configurations actually running on your network devices – that is best saved for another post. This is more focused on using version control and review workflows to initiate what will eventually turn into a networking-centric CI pipeline.
Let’s say you are the Senior Network Engineer for your entire company, which boasts a huge network. You don’t have time to touch every device, so you have a team of junior-level network engineers that help you out with move/add/change kinds of tasks. You’ve already moved your configurations into Jinja2 templates, and have created an Ansible role that takes care of moving configuration variables into a rendered Continue reading
I am in the Bay Area this week, working on some network automation stuff, and I was fortunate to be able to stop by and say hello to the Storage Field Day 6 folks over drinks.
I was told by several impressed delegates about a talk by Andy Warfield of Coho Data, where he described how they used OpenFlow to steer storage traffic intelligently to and from various nodes in a distributed storage array.
For the majority of the discussion, he talks at length about how NICs have long been able to push more data than a single CPU core is able to process, and as a result, they have to be intelligent about the distribution of packet processing onto the cores within a multicore system.
In summary, a big problem with file-based storage systems is dealing with load sharing. NFS clients have to point to an IP address where the exports are located, and if this IP address was available only on a single NIC on a storage array, this pretty severely limits your options – that port becomes a big bottleneck. I’ve seen some customers assign IP addresses to several ports on an array, and use them in rotations Continue reading
I’ve mentioned in past articles about my belief that networking – both as a discipline and a technology – needs to be more consumable to other disciplines. But what does this mean? I was reminded of a few great examples today that I think are relevant to this idea, and might help explain my point a little more clearly.
The assembly line revolutionized the auto industry. Prior to this, vehicle production was very slow, and extremely costly. The introduction of the assembly line for creating automobiles allowed cars to be created in a predictable, repeatable way. However, Ford famously required all Model T’s to be painted black. Even before the introduction of the assembly line, the Model T was available in other colors, but with the move to mass production, this option was taken away.
The term “mass customization” is essentially the idea that mass production can co-habitate with customization, resulting in a customer experience that is personal and custom-built, but that also gets to experience the low unit cost that comes with mass production.
A great example of mass customization is the Moto X phone, whose commercials famously offer all kinds of customization options Continue reading