Why #InfrastructureAsCode in networking?
(A thread, since I am often asked what's the fuss)
When we think hard about data models and manage to represent networks (or services) as 'code' in text files, we're able to utilize git and benefit from the best software dev practices.
1⃣ Configuration and Documentation in One Place
Those text files describing the desired state of a network/service ARE the documentation at the same time. Or, as these files are machine-readable, it’s easy to autogenerate pretty & enriched documentation pages, e.g. via markdown.
2⃣ Versioning
The ultimate answer to the “Who changed what, when, where, why?” is already built in. No need to deal with date- or version-based file name suffixes, ever again.
3⃣ Configuration Validation Against SoT
Since the desired state of your network/service is now machine-readable, it's relatively easy to write validation checks to quickly identify (and even remediate) configuration drift.
4⃣ Automated Tests via CI/CD Pipelines
From input data validation to full integration tests. All those predefined tests run every time something changes in your code and, more importantly, BEFORE it is pushed into production.
5⃣ Workflows via CI/CD Pipelines
Need to enforce super important ITIL processes like peer review before pushing a change into production? Easy, that's how developers have been working for ages now.
6⃣ Powerful Team Collaboration via GitHub/GitLab
You might have heard about ‘issues’, these little async messaging nuggets with rich context about your repository? Think Jira, Remedy, ServiceNow tickets, but on steroids.
So, to sum it up: #IaC enables more speed & efficiency in network operations, ensures configuration consistency, greatly minimizes risk, and gives us an outstanding collaboration platform on top.