NetStacksNetStacks

Map how changes happen today. Then build the pipeline that makes them happen.

Most automation encodes a process nobody wrote down. The tool does what the developer assumed, the operators work around it, and the gap between the two is where projects stall. We start with the process and build the pipeline to match it.

Mapping the process

Working sessions with the people who request changes, the people who approve them, and the people who make them, writing down what actually happens. Not the policy document. The real path, including the spreadsheet, the chat message, and the engineer who checks the one thing everyone forgets.

The output is a process map the team agrees is true, with the steps that can be automated now, the ones that need a decision first, and the ones that should stay human.

Building the pipeline

Then the pipeline: change requests in git or the ticketing system, automated pre-checks, a dry-run diff somebody reviews, approval, the change itself, and post-checks that prove it worked. Each step is a place where a bad change can be stopped.

  • Pre-change verification: reachability, protocol state, intent checks
  • Dry-run diff review before anything touches a device
  • Approval gates that match the existing change policy instead of replacing it
  • Post-change verification and rollback criteria agreed in advance
  • Evidence saved for every change: what ran, what it checked, who approved it
stages: [lint, build, netsim, dry-run, review]

build:
  stage: build
  script:
    - make -C packages/vlan/src clean all

netsim:
  stage: netsim
  script:
    - ncs-netsim create-network packages/cisco-iosxr-cli-7.52 3 pe
    - ncs-netsim start
    - ncs --with-package-reload
    - pytest tests/ -q

dry-run:
  stage: dry-run
  script:
    - ncs_cli -C -u admin < tests/dry-run.cli | tee dry-run.txt
  artifacts: { paths: [dry-run.txt] }
The shape of a GitLab pipeline for an orchestration package. Each stage can fail the merge request.

The pipeline, stage by stage

change-vlan-access.flowRun #4411runningServiceNowCHG0048211 approvedok0.3sPre-checkpyats learn bgp isisok41sForward verifyintent + path queriesok18sNSO dry-runcommit dry-run nativerunningliveReview diffowner: noc-l2waitingwaitApply + post-checkcommit, pyats diffqueuedqueued

Common questions

Does the team need a CI/CD background?
No. Basic git is enough to start. The pipeline is built so operators use it from the ticket or a form, not the command line.
What about changes that cannot be automated?
They go through the same pipeline with a person doing the middle step. The pre-checks and post-checks still run. That alone catches a lot.
How long does process mapping take?
Three to four weeks for one change type end to end, including the pipeline design. Building it is the next stage.

Cisco, Cisco NSO, Cisco Crosswork, and pyATS are trademarks or registered trademarks of Cisco Systems, Inc. Juniper and Paragon are trademarks of Juniper Networks, Inc. NetBrain is a trademark of NetBrain Technologies, Inc. Forward Networks is a trademark of Forward Networks, Inc. NetBox is a trademark of NetBox Labs. Nautobot is a trademark of Network to Code, LLC. Ansible is a trademark of Red Hat, Inc. ServiceNow is a trademark of ServiceNow, Inc. GitLab is a trademark of GitLab Inc. Jira is a trademark of Atlassian Pty Ltd. All other product names, logos, and brands are the property of their respective owners and are used for identification purposes only. Their use does not imply endorsement, sponsorship, or affiliation. NetStacks is an independent company and has no partnership, reseller, or affiliate relationship with any of these vendors.