The difficulty in sharing my automation
Hidden assumptions, and no owner.
autocon6-naf-framework-do-over.automate-the.net · AutoCon 6
Let's rewind. Four of my early automation projects, looked at again through the lens of the NAF Framework: what I used, what I skipped, and what I would do differently.
Claudia de Luna · Scroll to begin · Press → to begin
The NAF Framework
Let's rewind
First-generation automation is shaped by the task, the devices, and the tools I knew at the time. That is not a failure, but it turns into operational debt.
Why a do-over?
Hidden assumptions, and no owner.
No tests, no data model, credentials in code.
What the network is, mixed up with what I want it to be.
Every manual step becomes technical debt, friction, and/or risk.
As I look back
Through the lens of the NAF Framework
Which building blocks were there, even if I never named them.
Which building blocks were missing.
How I would have done it then, with the framework in hand. Not how I would do it now.
What it cost later.
Chapter 01 · Wrong! We needed network state (actually Observability)
01.A
Python, a text file of IPs and FQDNs, and raw ("semi-structured") text output.
01.B
Used: Collector/Executor. Skipped: everything else.
01.C
Presentation, Intent, Orchestration and Observability.
01.D
Parsed and normalized data, a front end, intent by vendor and OS, a real inventory, and a schedule.
01.E
Assume every manual step you execute will become technical debt, friction, and/or risk.
Chapter 02 · Merge current state, new template & exceptions into a new device configuration
02.A
Python and Jinja2, a spreadsheet as the data model, and parsed current configuration.
02.B
Used: Intent, Executor. Skipped: everything else.
02.C
Presentation (again), Observability, part of Intent, and Orchestration.
02.D
Intent that is not a spreadsheet, a front end, and orchestration with testing, triggers and file logistics.
02.E
Intent in state, in code and in a spreadsheet, with no revision control. Don't underestimate file logistics.
Chapter 03 · Cabling check, most recent configuration, endpoint survival and identification
03.A
Project 1 snapshots, parsed to JSON, with a TUI.
03.B
Intent (disguised as Observability), Collector, Orchestrator and Presentation.
03.C
Executor, Intent and Observability.
03.D
Intent separated from state, with programmatic access and a change and transaction log.
03.E
Poor traceability and logging, local output, and a task where we needed a workflow.
Chapter 04 · User self-service, on-demand M/A/C
04.A
A GUI with AAA, observability, a network configuration tool, an intent system, automated change requests and transaction logs.
04.B
Used: everything.
04.C
<Intentionally left blank>
04.D
The client would have rolled it out globally.
04.E
We won't find out.
The building blocks
Your turn
What is your "Do Over"?
Understand your scale
How much more than 1?
Don't overthink it
Knowing which questions to ask is the goal, not enterprise-scale everything.
How will you…
How will users access your automation?
How will you define intent?
How will you track network state over time?
How will you collect network data?
How will you execute commands and changes?
How will you orchestrate workflow tasks?
Keep going
01
02
The NAF Framework: tinyurl.com/naffdoc
03
Christian Adell & Damien Garros, AutoCon 5: tinyurl.com/naffdeepdive
04
05
#wg-network-automation-framework
With gratitude
This talk would not be what it is without the people who helped me get it to the stage.
01
For the public speaking and presentation coaching, and for building the framework this talk stands on.
02
For the public speaking and presentation coaching. Practical Development Solutions: practicaldev.com
Chapter 01 · 01.A
We set out to pull show commands. Wrong! We needed network state, which is actually Observability.
Solution
Chapter 01 · 01.B
Collection and execution were there, without the names.
Used
Skipped
Chapter 01 · 01.C
Presentation
Intent
Orchestration
Observability
Chapter 01 · 01.D
Collector
Presentation
Intent
Executor
Chapter 01 · 01.E
In my eagerness to get something working, a hand-maintained inventory file; credentials in or near the code; unstructured output that needed new regex for every new question; silent failures; no history.
Operational environment
Inventory
Chapter 02 · 02.A
Goal
Solution
Chapter 02 · 02.B
Used
Skipped
Chapter 02 · 02.C
Presentation (again)
Observability
Orchestration
Chapter 02 · 02.D
Define the data model before the template. Separate generating a config from deploying it. Ask how I would know the result matched the intent.
Intent
Presentation
Orchestration
Chapter 02 · 02.E
Why did a value change in Excel? Why did it come out that way in the config? I missed that every step of the way.
Intent
Revision control
Chapter 03 · 03.A
Goal
Solution
Chapter 03 · 03.B
Collector (the show commands); rough Observability (before-and-after snapshots); rough Presentation (the TUI).
Used
Chapter 03 · 03.C
A real Intent model; full Observability; an Orchestrator to sequence capture, wait for convergence, and compare; a proper report as the Presentation layer.
Skipped
Chapter 03 · 03.D
Treat the expected state as data. Make the output a report.
Intent
Chapter 03 · 03.E
Did we fix it? We needed a report non-engineers could read.
Technical debt
Chapter 04 · 04.A
Goal
Solution
Chapter 04 · 04.B
Used
Chapter 04 · 04.C
<Intentionally left blank>
Chapter 04 · 04.D
The client would have rolled it out globally.
Chapter 04 · 04.E
We won't find out. One gap: no administrative capability to search and analyze logs for changes.