What does a Network Automation Engineer do?
As a Network Automation Engineer you will be expected to use devops methodologies and manage your network using software and not just the CLI. You will work towards reducing manual workload through automation and improve processes and tools.
The big question I get asked all the time is
“What does a Network Automation Engineer actually do?”
Network automation engineers are just performing the same tasks that network engineers do every day but using tools like Ansible, Salt, Chef and programming in Python. Network changes and deployments are not being done on the command line but via the network automation tools.
The term Network Automation Developer has also gained in popularity and this is someone who has a stronger focus on programming normally in Python or Golang. There is a crossover now between network engineers who know a bit of development and developers who know a bit of network engineering.
Most network engineers today are still configuring networks the same way they have done for the last 20 years. Using console cables and CLI, configuring one device at a time with configuration files saved on laptops with random naming conventions depending on what mood they are in.
Things are changing, network configurations are no longer being saved with random names they are being version controlled in Git.
Network changes are being approved with pull requests and implemented via CI/CD pipelines with automated testing in virtual environments before being pushed to production.
You need to adopt an infrastructure-as-code approach to configuring your network.
There is a new breed of network engineer, the Network Automation Engineer!
Search Google for ‘network automation engineer jobs‘ and you will see more and more companies recruiting for this job type.
They are using all the tools above to help get the job done.
If you are not even sure what network automation is – check out this post What is Network Automation?
Network automation engineer job description
A typical job advert for a Network Automation Engineer will require experience of automation/orchestration using any of the following: Chef, Ansible, Python, YAML. The role will be allow some working from home, between 2 – 3 days onsite each week – API/REST – Automation, Network Automation, Wireless, LAN/WAN – WiFi – Scripting, Coding & Automation of Networks
Interestingly this job description did not even exist a few years ago!
Network Automation Engineer – Ansible, Python, API, LAN/WAN Network Engineer with automation/orchestration experience, using tools such as Chef, Ansible, Python, YAML. This role will involve implementing a new office LAN, rolling out Catalyst 3650/4500, Nexus & Juniper Switches and automating. Experience deploying automated Cisco & Juniper switch configurations.
If any of the above appeals to you and you understand that Chef is not a cook and Python is not a snake, then you could be a network automation engineer.
Most roles hiring today are typically looking for a network automation engineer with strong Python skills.
If it means nothing to you, read on and it will all be explained.
Network Automation Engineer Salary
The salary of a senior network automation engineer is currently rising above that of of a senior network engineer or consultant. Mainly because they can show skills in Python, Ansible, API’s, software development and network engineering. These skills are in high demand as the number of engineers with them are rare. So get your resume ready!
Network Automation Engineer Skills
What are the skills required for network automation?
- Networking knowledge is the primary skillset (or it used to be!) A few years ago the primary skillset for a network automation engineer was that they understood how a network operates. Whilst this is still mainly true, there are developers coming over the the network engineering space and being educated on a very specific part of the network that they need to automate. There will always need to be someone who understands what it is they are automating, but it is now more of a team effort with other people being focussed on the code.
- Python is the most popular programming language in use today for network automation. Every major vendor has libraries of Python modules that you can use to automate their hardware, so a working knowledge of Python is essential. You do not need to be Python developer as when things get heavy it is much easier to hire a developer for those tasks, but as a network automation engineer a good general knowledge of Python is essential.
- Git / GitHub / Gitlab – Version control is at the heart of all automation and one of the most popular tools in use today is Git. If you are going to succeed you need a working knowledge of Git and how to interact with the popular code repositories like Gitlab, Github, Bitbucket etc.
- Ansible is the most popular network automation tool in use today. Everyone needs to have a very good understanding of how Ansible works and be able to run playbooks or at least understand what the playbook is doing. Ansible is now a standard job requirement and questions in interviews regularly include Ansible as a topic. Understand what AWX, Ansible Tower and Ansible Automation Platform are. (Spoiler: they are basically the same tool! AWX is the open source version, Ansible Automation Platform is the newer version of Ansible Tower with so much more functionality.)
- APIs – every modern piece of network hardware now ships with an API whilst you can interact and configure a device via Python or Ansible, the more robust way of configuring devices is via an API.
- Orchestration Tools – finally to pull all of this together you are going to need knowledge of network orchestration tools. To automate an enterprise network you need to understand ServiceNow (SNOW) and how a fault on the network can generate a ticket and that ticket can trigger an Ansible playbook to pull some logs or perform a task.
- VSCode – whilst not essential you can use any code editor, but if you can get your way around VSCode that will make your life a lot easier!
The main skills that a network automation engineer needs to know in 2022 are a good grounding in software development tools like, Python, Git, Golang, VSCode.
With some real world experience using tools like Ansible, Saltstack & Puppet.
Now you don’t need to be a Python developer with 10 years experience, but a good understanding of Python concepts and being able to use it for network automation tasks is a must.
The other great benefit is that as more of the work is with software, working remote is more of an option.
Check out my Python for Network Engineers Tutorial with some simple scripts you can start using today
Network Automation Tools
The current tool of choice for network automation is Ansible and for good reason, firstly it’s free. Secondly it’s written in Python it is enabling network engineers to start automating networks with very little knowledge of Python.
All that’s needed is some basic Linux knowledge (Ansible can only be installed on Linux) an understanding of YAML and a task that you would like to automate.
Most people start with something simple like configuration backups or vlan creation or just some very simple changes like updating the NTP servers across all the switches in your environment.
So if all this sounds like something you would like to get on board with then get yourself a Linux machine, install Ansible and start automating your network.
Using DevOps Tools for Network Automation
DevOps practices are not only for software development teams – they can also be applied to network automation. DevOps tools such as Ansible, Chef, and Puppet can be used to automate network provisioning, configuration, and management tasks, making it easier for network engineers to keep up with the demands of modern IT environments.
One of the key benefits of using DevOps tools for network automation is the ability to treat network infrastructure as code. This means that network configurations can be managed in a similar way to software code, using version control tools to track changes, testing tools to validate changes, and automated deployment tools to ensure consistent and error-free configuration across the network.
Another advantage of using DevOps tools for network automation is the ability to leverage a wide range of pre-built modules and scripts. These tools can be customized to meet the specific needs of the network, making it easier and faster to implement automation. Additionally, DevOps tools provide a standardized approach to automation, making it easier for network engineers to collaborate and share knowledge.
Finally, using DevOps tools for network automation can help to increase efficiency and reduce errors. By automating repetitive tasks, network engineers can focus on higher-level strategic work, while reducing the risk of manual errors that can lead to outages or security vulnerabilities.
Overall, using DevOps tools for network automation can provide significant benefits for network engineering teams, helping them to manage increasingly complex IT environments with greater efficiency and accuracy.
Other interesting Network Automation posts..
- Things I wish I knew before learning Network Automation – Leaders in the field share their insights.
- Python Scripts for Network Engineers
Frequently asked questions on Network Automation
What does Network Automation mean?
Network automation is using software and development tools to make changes to your network devices instead of connecting via the CLI to each device separately.
Why is Python used for Network Automation?
Python is a one of the most popular programming languages in use today. Whilst not designed for automating network devices, it is very good at performing scripting tasks, which is what most network configuration is based on. Cisco even now installs Python on most of it’s switches.
Does Cisco use Python?
Many Cisco switches and routers provide an on-box Python Interpreter that can be leveraged to execute scripts and programs directly on end devices.
How do I become a Network Automation Engineer?
Start to learn Python or Ansible and performing some of your daily network admin tasks using these tools. Once you are doing some tasks using these tools you are a Network Automation Engineer! Just keep advancing your knowledge and learning and at some point you can progress to a full time role where this is all you do!
Will Network Engineers be replaced?
This is one of the fears that automation and AI will replace network engineers. The truth of the matter is that businesses need network engineers more, they just need them to do more and this is where automation helps.
Are Network Automation skills in demand?
In general, network automation skills are in high demand. This is especially true at larger enterprise or service provider networks. Having the ability to configure the network via automation is becoming a must have for network owners.
What skills are needed for Network Automation Engineer?
From a typical job description for a network automation engineer, most companies are looking for at least 2+ years of software engineering experience, solid experience in one high level programming language, typically Python or Go. Version control skills with Git, Gihub, Gitlab etc. Linux administration skills, knowledge of network protocols and hardware, switches, routers, firewalls, load balancers etc. Experience of one or more automation tools like Ansible, Terraform, Puppet etc. A desire to continue learning and an automation first approach to everything they do.
How do you automate a Network?
To automate a network you need to first get an inventory of your network devices, then using a tool like Ansible create a Playbook of the tasks you want to automate and then you run that Playbook against the inventory and all configuration is completed by the tool. It is more complicated than that but the basic steps are there.