cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
455
Views
1
Helpful
1
Replies

Word of the Week: Flexibility

Ken W. Alger
Cisco Employee
Cisco Employee

Regarding network automation, we have many different choices of programming languages from which to choose. Some languages have been around for decades, like Perl, and those that are relatively new, such as Go. Which one to use will most likely be determined by your organization and needs.

I always get a chuckle out of “which one is best” conversations (so this discussion is not meant to do that) as the answer to the “best” question is, quite honestly, “It depends.” What are you trying to accomplish? What language do you know? What language does your team know?

While it is easy to say that, for example, Python is an excellent choice for network automation, sometimes the situation and environment call for other solutions. Sometimes, a Bash or PowerShell script is called for. Sometimes, your team might be using Ruby for a specific task. Given the appropriate situation, even a language like JavaScript leveraging Node.js has its place in automation tasks.

If you’re beginning your network automation journey or would like a recommendation for which language to start learning, Python is a common place to start. It is relatively straightforward to learn, has a human-readable syntax, and allows for easy integration of systems. Additionally, if you want to move beyond network automation tasks, Python is a great language to start your programming journey. However, as big of a fan of Python as I am, I have been working with the Go language recently on a project and have also enjoyed that language.

Ultimately, as you work on network automation or programming, be flexible about the language you use. If there were a “perfect for every situation” language out there, we wouldn’t need all the others, right? Take some time to figure out what you want to achieve and then explore which language will do the task in a manner that you and your team find efficient.

What language are you using for network automation tasks? What language(s) would you like to learn to help improve your skills or current job functions? Let me know in the comments below.

 

1 Reply 1

davidn#
Cisco Employee
Cisco Employee

Back in the days, my go to network automation (or almost any computer related tasks automation) language is Perl. Now,  I use:

  1. Python: Its simplicity, readability, and extensive libraries (such as Paramiko, Netmiko, and NAPALM) make it an excellent choice for tasks like configuration management, network monitoring, and data analysis.
  2. Ansible: While Ansible is not a traditional programming language, it's a powerful automation tool that uses YAML to define tasks and playbooks. It's particularly well-suited for network automation due to its ability to automate configuration changes, device provisioning, and more across a wide range of devices and vendors.
  3. Terraform: a popular HashiCorp tool using HCL. It's widely used for provisioning and managing cloud resources, including network components like virtual networks, subnets, load balancers, and more. HCL makes it easy to describe complex network setups and automate the deployment and management of networking configurations.