Why tool selection matters
Picking the wrong tool for network automation rarely shows up as an obvious failure. It shows up six months later, when you’re hitting scale limits, maintaining code nobody else understands, or trying to add a feature the tool was never designed for.
This post won’t give you a list of tools to use. It will give you a framework for evaluating them, with some real examples of what goes wrong when that evaluation is skipped.

Choosing the right tool
Picking a tool isn’t just about what’s popular. A few questions worth asking upfront:
- What problem does it solve? Is this a one-off task, or something that runs repeatedly?
- What are your constraints? Open-source vs. commercial, language support, integration requirements.
- What’s the learning curve? How strong is the documentation, and is there an active community behind it?
- Can it scale? Will it hold up as your environment grows, or will you hit a ceiling later?
Some common starting points:
- Ansible: widely used for configuration management and task automation. Its agentless model and YAML-based playbooks make it accessible without deep programming knowledge.
- Python: the backbone of most network automation work. Libraries like Netmiko, NAPALM, and Nornir make it practical to interact with devices at scale.
- Bash: useful for targeted scripting and gluing commands together, but doesn’t scale well beyond straightforward tasks.
Tools within tools
One useful filter when evaluating a tool is to look at its ecosystem. A rich set of plugins, modules, or integrations means you’re not building everything from scratch, and it signals that others have already solved problems you’ll likely run into.
Ansible ships with collections tailored for network work:
- Ansible.Netcommon: core connection plugins and modules shared across network collections.
- Ansible.Network: higher-level modules for configuration management, device provisioning, and validation.
Python’s library ecosystem is extensive. A few you’ll encounter often:
- Netmiko: simplifies SSH connections to network devices across a wide range of vendors.
- Paramiko: the underlying SSH library that Netmiko is built on; useful when you need lower-level control.
- NAPALM: provides a unified API for interacting with devices from different vendors without needing to know the specifics of each CLI.
Vendor and Community Libraries
Vendors and open-source communities often ship their own Python libraries or SDKs for interacting with their platforms:
- Cisco’s pyATS
- Juniper’s PyEZ
- Arista’s EOS SDK
Network to Code has several projects worth knowing:
- netutils: a focused utility library for parsing and manipulating network data.
- netutils-ansible: an Ansible collection that wraps netutils functionality into reusable modules.
- pyntc: a library for interacting with network devices across multiple vendor platforms through a consistent interface.
Custom tools or Vendor tools?
I’ve personally seen a lot of organizations build their own custom tools. A big challenge with custom tools is that they can be difficult to maintain and scale, especially if they are built by a single person or a small team.
A risk for a lot of organizations is that they become dependent on the person or the team that built the tool, and if that person leaves the organization, it can be difficult to maintain and update the tool. Additionally, custom tools may not have the same level of community support and resources as off-the-shelf tools, which can make it harder to troubleshoot issues and find solutions.
A common issue is that the organization gets locked in to a custom tool. As the tool grows into their organization, all its processes become dependent on it. It often doesn’t scale alongside other tools, making integration harder and switching to something else later even harder. This is why it’s important to evaluate custom tools not just based on their features, but also on their scalability, maintainability, and community support.
Common pitfalls
When evaluating tools, be wary of:
- Over-engineering: Don’t pick a tool that does more than you need, as it can add unnecessary complexity.
- Vendor lock-in: Be cautious of tools that tie you to a specific vendor or ecosystem, as it can limit your flexibility in the future.
- Lack of community support: A tool without an active community can be a red flag, as it may indicate that the tool is not widely adopted or maintained, which can lead to issues down the line.
Show stoppers and big flaws are often discovered in production, typically when scaling up or upgrading to a newer version. By that point, switching to a different tool is costly.
So how do you know if a tool is the right fit? Here are some steps to follow:
- Ask around and see what others are using. This can be a great way to get recommendations and learn about tools that you may not have heard of before.
- Try out a few tools in a test environment. This will give you a hands-on feel for how the tool works and whether it meets your needs.
- Consider more than a proof of concept. A tool that works well in a test environment may not perform as well in production, so it’s important to evaluate the tool’s scalability and performance under real-world conditions.
- Look for tools with good documentation and an active community. This can be a great resource for troubleshooting and learning how to use the tool effectively.
- Deploy, downgrade and upgrade the tool in a test environment to see how it handles changes and updates. This can help you identify any potential issues that may arise when using the tool in production.
- Push back against management if they want to use a tool that you don’t think is the right fit. It’s important to advocate for the tools that you believe will best meet the needs of your organization, even if it means pushing back against management’s preferences.
Use Cases
To give a bit more context, here are three use cases I’ve encountered in my experience.
Use Case 1: Changing Requirements
I once worked with a customer who needed to pass a financial audit requiring a compliance report across all their devices and configurations. They had already built their automation tooling around a specific set of requirements, and compliance reporting wasn’t one of them.
They had chosen NetBox as their source of truth. At the time, there was no compliance plugin available for it. Itential was used to fetch the configuration from devices, and custom code was applied in NetBox to load it in per device. The tool passed the proof of concept and was deployed to production. But as audit requirements evolved, that custom compliance layer couldn’t keep up.
Nautobot, on the other hand, had a plugin called Golden Config that covered exactly what they needed, and would have met their original requirements too. The problem was that by the time this became apparent, it was too late to switch. The NetBox decision was already locked in: the proof of concept had passed, the project had been handed off to a different team, and the deadline had been met. Migrating wasn’t on the table.
The result: instead of using Golden Config out of the box, the team was left maintaining custom code on top of a tool that did not have that feature at the time.
Use Case 2: No architectural vision
Many organizations blindly choose a product because it’s popular, has a nice UI, or has a good marketing campaign, or simply because they’ve had a good experience with that vendor’s other products. A common example is Cisco’s DNA Center, which is a popular choice for network automation, but can be a poor fit for some organizations. It is a powerful tool, but difficult to use and maintain if the organization doesn’t have a clear architectural vision for how they want to use it.
My personal experience is that a customer was very satisfied with Cisco’s physical products, such as switches and access points. They had an easy time finding engineers with Cisco experience and a strong relationship with the vendor. So when it came to network automation, they chose Cisco DNA Center without evaluating other options or considering their specific needs and constraints.
The issue was that Cisco DNA Center is a complex tool, and without a clear architectural vision, vendors can sell products that are not a good fit without a lot of customization and integration. As a result, the organization struggled to get value from it and eventually tried to migrate away after a few years.
By that point, production depended on Cisco DNA Center, making it difficult to switch without disrupting operations. The same team tasked with migrating was also responsible for maintaining the existing platform, which created significant tension and frustration.
The result: a product chosen without a clear architectural vision ended up being a poor fit, and the cost of switching was far higher than the cost of evaluating properly upfront.
Use case 3: Fast results vs. long-term maintainability
A common pattern I’ve personally seen at many customers is that they select a tool that gives them fast results and comes with a support contract. This can be a good choice in the short term, especially if the organization is under pressure to deliver results quickly. However, it can lead to long-term issues if the tool doesn’t scale well or if the support contract becomes expensive.
What happens is that the organization treats the tool the same way as regular network equipment, appliances, or platforms. They expect it to work out of the box, and they expect the vendor to support it. Combined with deadline pressure from sprints or desired outcomes, selecting a tool with a short-term vision can be a painful choice in the long run. The organization may find itself locked into a tool that doesn’t meet their needs as they grow, and switching to something else later can come at a high cost.
Network automation is often treated as a project rather than a long-term initiative. This can lead to selecting tools that are good for the immediate goal, but not for the long-term maintenance and scalability of the automation efforts. By underestimating the long-term implications of tool selection, organizations can end up with a solution that is difficult to maintain and scale, and that may require significant resources to move away from in the future.
The result: a tool chosen for fast, short-term results can become a long-term burden if it doesn’t scale well or if the support contract grows expensive, and switching away from it later is rarely easy.
Conclusion
There is no single right answer to which tool to use. In my experience, the network automation landscape keeps shifting: a tool that works well today may not scale next year, or may lack features you’ll need as your environment grows. That’s not a failure, it’s the nature of the space.
The key is to be flexible and willing to adapt as your needs change and as new tools emerge. Use the framework in this post to evaluate your options critically, stay aware of the pitfalls, and don’t let short-term convenience lock you into a long-term problem. The right tool is the one that best fits your organization’s constraints and helps you move forward effectively.
I’ll leave you with a resource list of tools I’ve found useful, but the best tool for your situation may not be on it, and that’s fine.
Resources
- awesome-network-automation (THE best resource)
- Ansible Collections
- Ansible Network Automation
- Ansible Network Automation Guide
- Netmiko
- Paramiko
- NAPALM
- pyATS
- PyEZ
- EOS SDK
- netutils
- pyntc