Programming Languages for Network Automation
So I'm looking to add some programming languages to my resume, specifically thinking about network automation / SDN. I was a computer system major in college (long time ago lol took assembler, data structures/object oriented programming, Java, VB, and C+/C# classes) but ended up going the network route and haven't done much outside of TCL scripting for a while. Any thoughts / suggestions?
CCNP:Collaboration, CCNP:R&S, CCNA:S, CCNA:V, CCNA, CCENT
Comments
-
dmoore44 Member Posts: 646I'd say Pyhton... there's a library for just about everything, so it makes accomplishing something trivial.Graduated Carnegie Mellon University MSIT: Information Security & Assurance Currently Reading Books on TensorFlow
-
DoubleNNs Member Posts: 2,015 ■■■■■□□□□□Python.Goals for 2018:
Certs: RHCSA, LFCS: Ubuntu, CNCF CKA, CNCF CKAD | AWS Certified DevOps Engineer, AWS Solutions Architect Pro, AWS Certified Security Specialist, GCP Professional Cloud Architect
Learn: Terraform, Kubernetes, Prometheus & Golang | Improve: Docker, Python Programming
To-do | In Progress | Completed -
hurricane1091 Member Posts: 919 ■■■■□□□□□□Look into using ANSIBLE. Really have to have no idea how to program, but it uses Python I believe on the back end. I can configure a new branch router by just filling out all the variables like WAN interface IP, office subnet (which plugs into EIGRP and DHCP pool), etc. Still need to turn the router on and get it on the network and SSH capable, but aside from that you just run ANSIBLE and it is configured pretty easily and without mistake. It's not all there yet for us but a good start. I deployed AAA config to every branch router using it as well.
-
pitviper Member Posts: 1,376 ■■■■■■■□□□Thanks all! I was leaning towards Python so will start there. Plus it's snake related so it's a natural fit
I've played around with ANSIBLE recently but am more so looking for a do whatever I want language.CCNP:Collaboration, CCNP:R&S, CCNA:S, CCNA:V, CCNA, CCENT -
hurricane1091 Member Posts: 919 ■■■■□□□□□□Let me know what you come up with. I intended on learning Python but couldn't really figure out a reason to use it. I deploy configs to multiple devices through playbooks, set up new routers through playbooks, and pretty much just couldn't figure out what I would need to use traditional programming for in the network world. I'm sure there's a ton of real-world use cases, I just haven't found one for me yet.
-
ccie14023 Member Posts: 183Please go to developer.cisco.com if you haven't already. There are a number of learning labs there. We've worked hard to enable programmability features in NXOS, IOS XR, and IOS XE. The other commenters are correct, Python is the language of choice. However, that's only half the battle. Figuring out the programmable interfaces like NETCONF/YANG are a big part of it. If you have access to the Cisco Live content library, you might also check out my session BRKCRS-2451 from Las Vegas, which goes into detail on how to script IOS XE devices. (A little shameless self-promotion here.)
-
networker050184 Mod Posts: 11,962 ModPython is good long term learning. Being able to write things that can interact with your inventory systems etc. is very valuable.
To get something useful on the resume now I'd concentrate on some automation framework like Ansible instead though. Salt is another one used in the network world but less popular. You'll likely find that much more useful personally and professionally in the short term.An expert is a man who has made all the mistakes which can be made.