You have read the headlines. You have been reassured and reassured that you don't need to be a programmer—that you just need to think like a programmer (whatever that means).
You look around and see that the server team is leaving you in the dust. They have Puppet and Ansible. They rapidly create and provision VMs; they work closely with the Dev-team on Vagrant and Jenkins. You have...you have a bunch of manual VLAN changes that you need to complete. You aren't keeping pace; you CAN'T keep pace.
You have late-night change windows and ACLs (those #$@&%*! ACLs). You need to reconfigure trunks, add VLANs to switches, and configure two-dozen switch ports. You were forced to ditch VTP because a consultant declared it was unsafe—God forbid you do anything automatically unless there is zero-risk. Oh, and the last network admin was a control-freak who decided to explicitly enumerate all of the allowed VLANs on all of the trunks.
You are spiraling down into manual change hell!
But this is NOT what you want...
You don't want to spend all day configuring switchports. You don't want to spend weeks determining which ACL lines you can remove. You don't want to manually configure trunks, VLANs, switchports.
You want to break out of this all-manual mode of operation. You want to go from slow, time-consuming, strapped-together-with-duct-tape to rapid, robust, automatic.
You want to push changes programmatically. You want to generate configurations dynamically from templates. You want a system that is integrated and revision controlled. You want to treat your infrastructure as code.
But what skills do you need to accomplish this? What do you need to know to make this happen?
I hate to break the news to you...but you need to learn to program.
Now I am not saying you need to be Linus Torvalds or Guido van Rossum. You don't need to spend all day, every day, picking up a new language and learning complex skills, but you do need to be able to communicate to network devices programmatically. You need to be able to use APIs. You need to be able to glue parts of your system and workflow together. You need to learn how to how to write and maintain reusable code.
But how do you get there...
How do you learn the skills to start automating tasks in your environment? How do you start building a templated configuration system? How do you gather information from your network devices programmatically? How do you start creating an integrated and automated workflow?
This course can help.
You will learn skills that make you better at network automation and that improve your capability to use programming to scale your work.
"the course was excellent and hugely enjoyable. It was learning Python focused, on using it to automate networking tasks, which made the course very relevant...I have recommended this and the beginner course to a number of colleagues and will continue to do so."
"I thought this was a great class. I found it searching for information on writing Ansible modules for network devices so it came at the right time with the right content—I wanted to improve my Python skills and start working on my own modules."
The course is a nine-week email-course. Each week you will receive a lesson that contains a set of videos, some additional content, and some exercises. I will post solutions to the exercises online. Both the Plus and Certification Packages will also have a community forum where you can ask questions, post code, and interact with me and with the other students.
Yes, the lab environment will consist of a set of virtual and physical network devices and at least one AWS-Linux server. I will install a set of libraries in the lab environment; this will enable you to get working quickly. From the lab environment you will be able to use Ansible, Paramiko SSH, Netmiko, Arista's eAPI, and PySNMP. Additionally, the Plus and Certification Packages will be able to use Juniper's PyEZ library and Juniper-Ansible modules.
You should be familiar with the basics of Python. You can be slow at writing Python code, but these ideas should not be new to you.
You also need to be familiar with basic network engineering (routing, switching, SNMP, Cisco CLI configuration).
Finally, since the lab environment will use Linux. You should be at least somewhat familiar with Linux. You should know the basics of how to move around the file system, execute a script, edit a file.
Python facilitates writing clean, readable code and is natively present on Linux and MacOS. Python has gained widespread support in the networking community both from engineers and from vendors. Python has a large, active community and consequently numerous resources are available to you (libraries, documentation, books, tutorials, etc.).
The community forum is a web forum where students can interact including posting code, asking questions, code review, and recommendations on general Python resources. Both the Plus and Certification Packages will provide you with access to the community forum for the duration of the course.
If you are not satisfied with the course, there is a 30-day money back guarantee (from the start of the course). No questions asked.
My name is Kirk Byers.
In the fall of 2010, I started on a journey to: 1)build a product business, 2)become a programmer, and 3)be a father (probably not the best idea to try all these things at once).
I am into Python, networking, and figuring out how to combine them to automate networking tasks.
I am a CCIE (emeritus) in routing and switching and have extensive Python experience. Since early 2014, I have been teaching Python to Network Engineers. Since that time, several thousand individuals have participated in my free Learning Python course.
In addition to my work on teaching Python to network engineers, I also have spent considerable time working on a cloud-based network automation application (Last Hop Automation) and on an open-source library to simplify network automation using SSH (Netmiko).
Yes, yes I get it...you are great and all that, but why should I learn Python from you?
I have spent numerous hours over the last four and a half years using Python, studying Python, teaching Python and from this I have gained a considerable amount of Python experience and knowledge.
I can help you apply Python to network engineering tasks too.