If you’ve read any of my Virtualization section or related posts (soon to arrive), you may have gathered there was, well, quite a bit going on. Or perhaps you didn’t! On the surface it’s just a GNS3 setup, how hard is that?! Except what I didn’t elaborate on there is that it’s not the more typical GNS3 virtual machine on a Windows desktop. Instead, I’m running it natively under a custom user on my Linux box, with a custom systemd service to call it up. Of course, that’s not TOO hard to figure out. Plenty of documentation for that! But then I started running into… situations.
For example, I wanted to use a fancy new Nokia platform except there wasn’t any pre-made GNS3 images using that platform. The platform itself is delivered via Docker, and GNS3 supports Docker, so I figured sure! I’ll try that. Turns out that GNS3 implements some initializing scripts for typical Docker images that conflict with the internal initializing scripts of Nokia’s SR-Linux platform. Oops. So now what?
I considered trying to de-containerize SR-Linux and turn it into a full VM of its own (and I still intend to try that someday), but by this time I had spent considerable time diving into GNS3’s source code, poking and prodding and the Docker container, experimenting with different startup options for the container, and I really just wanted to get on with the business of trying this platform out in my Pocket Internet environment. Now bear with me here as what I’m about to explain is an absolute hack that I would NEVER put in to a production environment unless somebody’s well being depended on it, but there comes a time when one must analyze one’s goals and find a way forward. My goal was to see if the platform would make sense in my Pocket Internet. My goal was not to learn the ins and outs of GNS3 and Docker (at least not at that time). So I created a virtual machine, put docker on the virtual machine, put the SR-Linux container in Docker, bridged the Docker interfaces to the VM’s interface, then bridged the VM’s interfaces to a virtual interface in the host system, and then used the GNS3 cloud element to bridge the virtual interfaces into GNS3. Honestly, I feel dirty even admitting to that. Also, some of you may be wondering: “Well why didn’t you just run SR-Linux as a docker container on the host system and bridge those to virtual interfaces on the host system, thus saving all the resources required for a full VM?” To you, ma’am/sir, I say: “Ssssssssssssshhhhhhhhhhh…….. Shh.”
BUT IT WORKED!
Then I was able to evaluate the platform, determine it was not going to work for this environment (missing some protocols and features), and continue on using a completely different platform.
Now how a prospective employer will interpret that little story will vary wildly. Some will be crying, screaming into the night “WHY?!” Others will be chuckling in an almost embarrassed way because they KNOW they absolutely have done worse in the name of getting the job done. My hope for your takeaway is that you see someone who considered their mission, assessed the risk / appropriateness of an available solution given the circumstances (lab), and proceeded to complete the task of evaluating a platform for use in the target environment. Had it been a good fit, naturally I would have looked a little closer at implementation.
If you followed me on this journey I salute you. I hope you found something meaningful in this write-up.