Ever since AutoCon1, I've been trying to define Network Automation, at least in my own mind.
The thinking is, we need to define terms before we can tackle solutions.
In a jet lagged, sleep deprived moment, it occurred to me that NAF is trying to help us go from a single celled organisms to a multicelled one. I did a little research and stumbled upon this paper by Kat McGowan and specifically this content:
For billions of years, single-celled creatures had the planet to themselves, floating through the oceans in solitary bliss. Some microorganisms attempted multicellular arrangements, forming small sheets or filaments of cells. But these ventures hit dead ends. The single cell ruled the earth.
...
The technical demands of multicellularity are significant. Cells that commit to living together need a whole new set of tools. They have to come up with ways of sticking together, communicating, and sharing oxygen and food. They also need a master developmental program, a way to direct specific cells to take on specialized jobs in different parts of the body.
Nonetheless, during the course of evolution, the transition to multicellularity happened separately as many as 20 different times in lineages from algae to plants to fungi. But animals were the first to develop complex bodies, emerging as the most dramatic example of early multicellular success
Sticking together, communicating, sharing resources with an overall plan and adapting to a changing environment.
I thought that summed it up brilliantly. Each of those activities requires a deep dive and that is starting to happen at AutoCon.
Today, let me focus on communication. To effectively communicate we need to define terms. We need a lexicon. I was always impressed that that was the first thing ITIL tackled.
So lets begin with the obvious one.
What is network automation?
Here is what I've come up with:
Network Automation is the act of establishing those skills, tools, data, and workflows necessary
- to provide a programmatic interface
- for authorized operators
- to interact with the organization's network infrastructure.
This act effectively builds a programmatic interaction “service” or "uber-API" to the network so that actions act uniformly across one or many elements of an organization's network estate.
The service may be exposed via various UX models including API, GUI, and CLI which can then be efficiently consumed across the entire organization and in orchestration actions.
Orchestration can choreograph one or more of these network automation ”services” to provide a cross-organizational service to their user community or to other parts of the IT Organization.
I hope with this definition we can start to shift the focus from a tool to an end to end workflow that involves people, data, events, tools, and infrastructure.
I am not entirely sure this is the best definition but this is allowing me to think more effectively about my own automation efforts.
Am I providing a consumable service that can be used uniformly by authorized others?
With this in hand lets take stock...
So with this definition in hand I started evaluating some of my network automation activities.
Activity | Is this Network Automation as defined here? |
---|---|
I have a mechanism (Tool, Python script, etc.) that generates specific device configurations from a template. | No |
I have a script that I wrote (and only I can run) that I use to check routes on one or more switches. | No |
I have a script I've shared with a few on my team to .... | No |
My script pulls the next available subnet from the IPAMS API. | No |
Well then...
That is odd. Conventional wisdom tells us that all of those things ARE network automation. In fact necessary for network automation.
Maybe we need a new term?
I think the examples above are single cell automation or unit level network automation.
We need to start thinking in terms of multicellular or system level network automation and crisper definitions like this one can set us on the right path.