Continuous integration and continuous delivery/deployment (CI/CD) is a set of modern software development practices used for delivering code changes more reliably and often. While CI/CD is widely adopted in the software world, it’s becoming more relevant for network engineers, particularly as networks become automated and software-driven.
In this post, I briefly introduce CI/CD and explain how network engineers can use these practices for network automation, particularly when using Cumulus Linux and simulating with the NVIDIA Air digital twin platform.
What’s a CI/CD pipeline?A CI/CD pipeline automates the software delivery process. It ensures that code is tested, validated, and deployed across environments in a repeatable and scalable way. The pipeline integrates:
For network engineers, this translates to a more efficient, reliable process for deploying network configurations and automation scripts.
Why CI/CD for networks?With a network operating system like Cumulus Linux, which natively supports automation and scripting thanks to its Linux roots, network automation can adopt the same principles used in software engineering.
Why is it important?
Let’s look at how network engineers can apply CI/CD concepts in practice.
Code commit: treating configuration as codeIf we treat network configurations as code, changes like automation scripts or topology configs go through version control (e.g., Git). This makes changes traceable, reviewable, and testable, like any software development workflow.
By accepting configuration changes as code changes, network teams integrate directly into DevOps workflows, improving visibility and governance.
Continuous integration (CI)CI automatically verifies that code changes are valid and buildable.
For network use cases:
CD automates the deployment of validated configurations to testing and production environments.
For example:
While we won’t dive into the full details of building a pipeline (e.g., using GitLab) in this post, it’s important to highlight that the key configuration file in a GitLab CI/CD setup is the .gitlab-ci.yml file.
This YAML-formatted file defines how the pipeline operates, specifying the stages, jobs, and execution logic. It tells GitLab how to orchestrate tasks like configuration rendering, testing, validation, and deployment.
Because this file serves as the blueprint for your entire automation workflow, it’s essential to understand how to structure it properly and define task parameters correctly. In an upcoming post in this series, we’ll take a closer look at how to write and manage a .gitlab-ci.yml file effectively for network automation.
Automated testing and verificationCI/CD pipelines can include automated validation by:
This provides continuous feedback on network health and prevents misconfigurations from propagating.
Using CI/CD with NVIDIA AirThe NVIDIA Air digital twin platform is an advanced simulation environment for modern data centers. It enables the simulation of complex networks using Cumulus Linux, SONIC, and the possibility of simulating host operating systems.
Users can build topologies using:
While manual setup works for general use cases and is very intuitive, CI/CD pipelines offer more professional workflows for rapid iteration, validation, and sharing.
Automating NVIDIA AIR using APIs:
Using either method, pipelines can:
Network engineers can use CI/CD with NVIDIA Air for:
Example CI/CD pipeline for a data center simulation environment on NVIDIA Air
The following is a real life example from our development team of a CI/CD pipeline with NVIDIA Air, simulating a data center use case:
CI/CD pipelines—standard tooling in software engineering—are now a crucial part of network automation. With platforms like Cumulus Linux and NVIDIA Air, network engineers can bring the same agility, reliability, and efficiency to their operations.
By combining CI/CD best practices with powerful simulation tools, we can deliver highly scalable, error-free, and rapid network deployments—whether in a virtual lab or production data center.
Learn moreRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4