For my opening post, I want to give an overview of what automation is, and more importantly, is not. We hear a lot of it the networking/infrastructure space. First, lets define what it is not:
- A panacea
- One size fits all
- One tool
- Clicking next, next, finish
- A simple journey
- Something so convoluted only a grey beard steeped in ways of SNMP and C++ can master
- A tool to replace you
So what is automation? Glad you asked. For our purposes, here are some definitions I want to work from.
Automation: Taking a well defined process and using software to run that process in a repeatable, consistent, and predictable manner.
Configuration Management: Using automation to manage elements of a device’s or system’s settings.
What this actually is you taking your steps and knowledge to do a task, and put it in a text file that makes easy to repeat. It gets your knowledge from your head and into repositories so you, or others, don’t have to ask “How the hell did I do that?”. The human tenancy of “not always do things the same way” becomes “its always the same, every time.” We want variety in how I make my chili, not our network. Time spent troubleshooting is reduced. No more more of giving the config stanza the “Gaze of Death”™ to frighten out the offending lines. Less arguing with TAC/Change Control/Who Ever because “If A and B are identical, A works and B doesn’t, then your B is broken”
And no, this won’t be the easiest thing at first, it’s learning a whole new set of skills. None of us became wizards of networking overnight. We did it over the years with learning and suffering. I focus on using Ansible, Git, and Python.