The buzzword in the industry of late is DevOps. It is one that I hope isn’t tarnished by the marketing machine where buzzwords go to die. DevOps is the shift in the paradigm of network and infrastructure management. Centralized infrastructure that is transparent to the administrator and end-user, IaaS, Cloud, whatever you want to label it, has been the catalyst in DevOps automation. This push has made us step back and look at not what we do per say but HOW we do it.

The Venn diagram above shows what DevOps is and can assist with. The framework can ensure Quality Assurance of code and change. It can improve development of software engineering by opening APIs to be leveraged all while Technology operations automates and actually engineers solutions.

Now, I am far from someone who works on a scale that requires DevOps but this is a framework that can scale. Network engineering no longer should be mundane tasks like conf, set interfaces fe-0/0/0 unit o family inet address How is the time efficient? What if you need to change 300 devices? What if you are writing it by hand? A waste of time and prone to error.

Puppet by PuppetLabs allows System Engineers to automate tasks across their environment. By collecting facts, a puppet server can learn and automated manifests can be enabled to perform tasks. Deploy a VM there, set interface settings, port channel settings and set descriptions in a workflow. One click, many tasks, possible across many platforms or devices. Beats jumping around and spending time in a screen you’ve been in 4000 times before.

Juniper today announced Puppet support for their 12.2R3,5 JUNOS code. This is compatible with EX4200, EX4550, and QFX3500 switches. These are top end switches but this start is directly aimed at their DC and enterprise devices. Initially the manifest interactions offered are interface, layer 2 interface, vlan, port aggregation groups, and device names. This definitely shows the direction of what Derick Winkworth (Cloudtoad) and his team showed at NFD4. More importantly it shows the ground that has been made.

An example of an interface manifest that is sent from the Puppet server, to the Puppet NetDev module, through JUNOS to the netconf. The image below shows the transaction between devices.

node "" {

    netdev_device { $hostname: }

    netdev_interface { "ge-0/0/19":
        description => "connected to old hub",
        speed => 100m,
        duplex => full


The configuration generated from the above example pushed to a device would look like this

[email protected]> show configuration interfaces ge-0/0/19
description "connected to old device";
ether-options {
    link-mode full-duplex;
    speed {

Getting the point? Much easier to send a task than sit and type those commands manually. Add this to a workflow, say for a VM deployment or new server rack and you are no longer a monkey typing commands but an engineer who is optimizing and scaling.

At this stage puppet commands exist for interface, L2 interface,VLAN, lag groups, and device names. Albeit a small family of devices and limited functionality at this stage, Juniper has taken a great step into a larger world. This is one of the first announcements where I got rather excited. Kurt Bales skyped me the same time I opened the link and we both agreed “Nerd Boner”

Now I don’t profess to be a DevOps programming god, nor can I lead you out of the broccoli forest of despair, but I do believe in time with steps forward such as todays announcement together as an industry we can step towards the light. Heck, one day we might get to the top of the hill and see the valley of IT utopia below. Until then we must fight our way through the broccoli.

Read more 
Automate Network Configuration with Puppet for Junos OS
Puppet for JUNOS Administration Guide

9 thoughts on “Dancing on the strings of DevOps

    1. Yes, although it is Cisco. They have been lackluster in the past. I get scared about the N1kV considering VMware and Ciscos ‘interesting’ relationship since VMware acquired Nicira. We shall see. Thanks for posting.

      1. I wouldn’t write Cisco off just yet with regards to network programmability. They might be playing catch up in some regards but they are building up speed.

        For a company that only 12 months ago, couldn’t seriously offer anything in this regard, they’ve sprung in to action. Watch this space, especially as the competition heats up.

  1. The diagram showing the interaction between Puppet, JUNOS and the SDK is excellent. I’m trying to work out how extensible this architecture is so the question is… can I choose the config management tool of my choice? Can I run CFengine or Chef where Puppet is shown running above?

    1. @hartley231 – Theoretically you could. You would use the Junos SDK toolchain to build and compile the apps of your choice. Check out for details.

      The “interesting bits” for Puppet, Chef, etc., are in the abstractions, like “netdev”. The power behind these frameworks is that it empowers DevOps to create what they need in a tool that “fits their brain” rather than having to wait on the vendor.

      More to come!
      — Jeremy


Leave a Reply

Your email address will not be published. Required fields are marked *