Puppet and Junos: What’s this Networking Automation Solution All About?
A few weeks ago, I had the honor of co-presenting at the Bay Area Juniper Users Group (BAJUG), which meets once a quarter in Sunnyvale, CA. Jeremy Schulman from Juniper Networks invited me to co-present with him on the Puppet for Junos OS solution, which became available in February. Haven't heard about this networking automation solution before this blog? I'll explain more, but first, I want to briefly summarize my experience at BAJUG. I really loved the format of the user group. It kicked off with a one-hour keynote presentation from Jeremy on the Puppet for Junos OS solution, which was followed by a series of 10-minute lightning talks. Those talks were given by network guys from Facebook, IETF, Zygna, and more. The event ended with a free-form social. It was a sold out event, attended by about 250 people. Here's a photograph I took right before my talk.
Jeremy kicked things off a well-thought-out, hour-long overview on Puppet Labs, as well as an in-depth look at the netdev Puppet Forge module. Immediately after, I gave a 15-minute lightning talk on Puppet Labs, how Puppet works and an introduction to Puppet Forge. The presentation was well-received, with a ton of enthusiasm for the prospect of managing Juniper devices using Puppet. It inspired the same level of enthusiasm and excitement in me that I had at Penn State, learning to automate repetitive tasks on my RedHat systems. I almost became a network admin instead of a sysadmin. I've even received far more formal training on networking (via Cisco) than anything else. Network admins are awesome people. They're really smart and reasoned (especially core network admins), but given the gravity of making a mistake, management of network devices is often more deliberate and sometimes manual than systems management. I would have loved a tool that let me solve my challenges in safe environments and automate the solution to those challenges in a consistent and reliable way. That's where the Puppet for Junos OS solution comes in. Juniper devices run on a FreeBSD-based OS called Junos. The folks from Juniper Networks have built an add-on to this OS that places a Puppet agent on the box, checking into masters like any other. Using the netdev module from the Forge, you can declare how you want your switches configured, and which Puppet on the switch will enforce during its next run. As a network admin, I'd be excited about reducing human error and allowing my switches to fix themselves when configuration changes. Even better, if a switch dies, I just have to drop in a new one, check it into my Puppet master, and its configuration is back to normal! For more details on how it works, see the below diagram.