Programming Languages for Network Automation

pitviperpitviper Senior MemberPosts: 1,375Member ■■■■■■■□□□
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

  • MitechniqMitechniq Posts: 286Member ■■■■□□□□□□
    Python is the non developers programming language.
  • dmoore44dmoore44 Posts: 646Member
    I'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
  • DoubleNNsDoubleNNs Posts: 2,013Member ■■■■■□□□□□
    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
  • hurricane1091hurricane1091 Posts: 918Member
    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.
  • pitviperpitviper Senior Member Posts: 1,375Member ■■■■■■■□□□
    Thanks all! I was leaning towards Python so will start there. Plus it's snake related so it's a natural fit icon_cheers.gif

    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
  • hurricane1091hurricane1091 Posts: 918Member
    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.
  • ccie14023ccie14023 Posts: 183Member
    Please 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.)
  • networker050184networker050184 Posts: 11,962Mod Mod
    Python 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.
Sign In or Register to comment.