Giter Site home page Giter Site logo

Model-Driven DevOps

This is the companion repository for the book "Model-Driven DevOps: Increasing agility and security in your physical network through DevOps" (Amazon). It presents the code and a set of exercises that implements and demonstrates the concepts in the book. In this repo, you are encouraged to use and contribute to the code, submit issues for problems and feature requests, and start/participate in discussions.

What is Model-Driven DevOps?

Model-Driven Devops (MDD) is an IaC approach to automating physical infrastructure that focuses on data organization and movement into the network in a way that seeks to treat the network the same as other parts of the infrastructure. It focuses on using industry standard tools and DevOps methodologies implemented as a CI/CD pipeline to break down silos between network operations and the rest of the infrastructure. For example, this is a common flow in Cloud Operations:

Cloud Ops Flow

Key to this flow is that all the data (Source of Truth) needed to configure the infrastructure is in the data file (CFT Template). Also, this is not a programmatic approach. If you want to configure something different, you add data to the Source of Truth as opposed to writing another Ansible playbook or Python script. We firmly believe that most network operators should not need to become programmers; however, they will have to learn a new skillset including APIs, data models, and data manipulation.

When fully implemented, MDD requires a similar skillset to cloud operations. That is, when a network operator wants to configure, validate, or test something new, they just need to know how to add data to the Source of Truth and manipulate schemas. Furthermore, MDD can fit into existing CI/CD pipelines as opposed to needing to operate the network infrastructure differently. This allows for a de-siloization of IT making it possible to leverage developers and DevOps Engineers across application development, cloud operations, and network operations. This is because the MDD pipeline looks the same as any other code (or IaC) pipeline:

MDD Branch Flow

This workflow allows for a group of network engineers and network operators to collaborate on a change, test that change, get approvals, then push that change into the production network. MDD's testing methodologies include linting the configuration data for typos, validating the configuration data for anything that would violate organization norms or create vulnerabilities, and then testing the result of that change in a network before deployment:

MDD CI Flow

The goal is to find a bad configuration before it is pushed into the network.

MDD Reference implementation

This is the reference implementation for Model-Driven Devops as outlined in the book. While the book captures the reference implementation at a moment in time, the code in this repo will evolve while holding true to the core concepts presented in the book.

Topology

MDD Reference Topology

Exercises

These exercises are provided to help get hands-on experience with the reference implementation. The book goes into depth on the individual steps as well as the core concepts behind them.

Note: the exercises below are intended for you to execute in your own environment and require CML and access to NSO software. If you would like to try out MDD in a DevNet sandbox, the exercises have been adapted and extended to work in the DevNet NSO sandbox. The DevNet NSO sandbox includes CML, NSO, GitLab and NetBox. The updated exercises can be found in the mdd-workshop repo.

model-driven-devops's Projects

ansible-mdd icon ansible-mdd

An Ansible Collection of DevOps Playbooks, Roles, and Utilities

mdd-netdevops icon mdd-netdevops

Repository containing exercises to implement and operate a pipeline to manage network infrastructure

mdt-cribl icon mdt-cribl

Cisco Model-Driven-Telemetry using Telegraf, Cribl, and Elasticsearch

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.