Cisco Blogs

Learning Python on IOS-XE…turning anxiety to excitement

- August 7, 2017 - 3 Comments

CLI programming skills are still relevant in IOS XE, but adding a Linux container with Python natively embedded in release 16.5 takes programmable networks to the next level.

With another Cisco Live fading in the rear-view mirror, I find myself reflecting on some of the really interesting events that happened. I’m not talking about the customer appreciation event or partner parties, but rather what did I see that was different from previous years? What are the trends that I see emerging that might not have been as important last year?

The DevNet team with Chuck Robbins at Cisco Live 2017 in Las Vegas

One of the trends that has presented itself over the past several Cisco Lives and just continues to create more and more “buzz” is the addition of programming and the capabilities showcased inside the DEVNET area of Live.

For me, each time I attend a Live, I seem to spend more and more of that time at DEVNET, and this year was no exception. It’s not just the interactive and newer ways content is being shared with our customers; ways like workbenches or self-paced labs, but it’s the energy from all of our customers who are seeing the value in programming the network.

Traditional network engineers look to supercharge their networks with Python on IOS-XE

For a traditional network engineer, who has spent his or her career living in CLI and building out networks one way, some of these concepts and technologies can be a bit overwhelming. What exactly does Ansible do? What are the differences between RESTCONF and NETCONF and why should I care? How does YANG fit into this? Why has Python become so important? But with the anxiety around all of these changes, there is also a tremendous amount of excitement. I witnessed and participated in many conversations around what would be the best thing to learn first and which programming technology would be the most impactful immediately.

In the midst of all of this, I was running a session in its maiden voyage at DEVNET — “Supercharge Your Network with Python on IOS-XE.”  There was a lot of interest in this one from the traditional network engineers, the same types of folks I pointed out earlier, who had been feeling a bit overwhelmed. This session demonstrated some of the key capabilities we have added to IOS-XE with the release of the 16.5 around adding a Linux container with Python natively embedded. Aside from learning some basics of Python, what my audience found most exciting was how we have not only added a container that can run Python, but how we have integrated that container into some of the core IOS services that our customers have come to know and love.

The two key integration points that caused so much conversation were the built in library that permits the Python container to run native IOS commands as part of a script, and the ability to leverage Embedded Event Manager inside IOS to trigger an on-box Python script. These two really provided the “Eureka” moment for the traditional network engineers as they began to understand why putting a Python container would be useful.

Now, the vision of an automated network, can be seen in more clarity. Using something like EEM to create a trigger based on a response to changing network conditions has been possible for years, but what could be done in response to this trigger has always been limited to more static IOS commands. Using a programming language like Python affords the ability to be much more impactful and dynamic on the changes that can be pushed out.

CLI programming skills still relevant in IOS XE

I think one of the most valuable lessons that customers came away with from these new programming capabilities in IOS-XE, was that the knowledge of IOS programming through CLI is not something that has become irrelevant. The lesson that only through this knowledge of using CLI can the capabilities of things like on-box Python or configuring via NETCONF be fully impactful. Details of the workbench session I ran can be found on my Github site.

The new wave of programming network devices running IOS-XE can be read in more detail here. On this page, we discuss application hosting on IOS-XE, running Python, using NETCONF and RESTCONF, or Day 0 Provisioning. Topics on this page are the cornerstone of how IOS-XE is becoming an open and programmable operating system for running a network. I also encourage you to try DevNet’s Learning Track on Network Programmability for Network Engineers. It’s a set of self-paced learning labs that takes you from learning the foundational elements of programming to working with device level interfaces, and developing with network controllers like APIC-EM.

It’s a new day for operating and running a network, and I am very excited to see where these technologies lead. As a new session at Cisco Live this year, I am thrilled with how much interest it generated, and I am eagerly awaiting what the next year, and the next Cisco Live, holds.


In an effort to keep conversations fresh, Cisco Blogs closes comments after 60 days. Please visit the Cisco Blogs hub page for the latest content.


    Great write up on #CLUS Ryan! And excellent job with the new sessions in DevNet Zone. I walked by one of your sessions and was in awe by the number of people squeezed into standing room around your workbenches. Definitely a topic that is exciting everyone!

  1. Hello, I am a CLI guy Love it! But, I must say I am pumped about the whole DevNet, Python, Netconf, Programability.... I believe I see where this is going for me..New skill sets and I love it. Where does one begin to learn to Program with the new CISCO IOS XE software ? Training, Tutorials, Labs, Certs etc. This is exciting stuff. Thank you CISCO!!!

  2. Excellent read Ryan. Thank You