Skip to content
This repository has been archived by the owner on Apr 20, 2022. It is now read-only.
/ network-as-code Public archive

Demo Repository of the CloudGenix Network as Code solution.

License

Notifications You must be signed in to change notification settings

CloudGenix/network-as-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudGenix Logo

Build Status GitHub open pull requests GitHub closed pull requests GitHub issues open GitHub License (MIT)

CloudGenix Network as Code Demo Environment

Demo of a CloudGenix Network as Code Environment

Archive notice.

This proof-of-concept repository is being moved to "Archived" status, for a few reasons.

  • It's no longer maintained
  • It served it's purpouse (well, I might add.)
  • It's functionality will be replaced by a Prisma SD-WAN CI/CD CloudBlade.
  • The Travis-CI oAuth security issue made us remove Travis-CI integration as an abundance of caution - which broke this tool.

If you have questions or would like some additional info - please feel free to reach out to @ebob9 or @ktanushree - Thanks!

Concept

Build an Enterprise-Class Remote Branch Office network using Coding tools and principles. Deploy, reconfigure at will. All changes are tracked and approved using traditional Git-flow tools.

Network as Code

Where is the source of truth that defines a network?

  • Traditional 'Router' Network: The source of truth is the "config file" on the Router.
  • SDN (Even SD-WAN) Network: The source of truth should be the configuration that lives on the controller (Isn't always - depends on vendor 😊.)
  • DevOps Application Network, Network as Code: The source of truth is wherever and whatever you want it to be..

Environment Overview

Demo Overview

  • Active CloudGenix Network
    • For this example, 3 sites, 6 devices.
  • GitHub Repository hosting the configurations for the network
    • Network change requests are git pull requests to the master branch
  • Travis-ci set up to perform builds off master branch.
    • Once pulls are approved via GitHub process, code is automatically deployed into the network!
    • Successful deploys are tagged in_prod back in GitHub.
    • On failure can re-build, or check-in new changes to fix.
    • Logs and even CloudGenix UI screenshots are saved in the results branch.

Tools Used

Participate!

This demo isn't just for show. You too can make changes! To participate, do the following:

  1. On your GitHub account, fork this repository. You've now got a copy of this repository you can change and edit! GitHub forks
  2. In the configurations directory, make some changes to one or more of the *.yml config files. You can do this right in GitHub by clicking "Edit File."
  3. Commit your changes, give your commit a descriptive name. If using a local GIT repo, you need to push your commit back to your GitHub Fork.
  4. Create a PULL request from your repository (and branch) to CloudGenix/network-as-code:master.
  5. The CloudGenix team will review and approve (or deny) your pull request, and then the change can be merged live.
  6. After approval, changes should get made with the next run of Travis CI.

To see your changes:

For this demo, we'll attempt take most changes (within reason.) Even if stuff breaks, we can easily roll back. For best/quickest results, here are the easiest changes to approve:

  • Modify Descriptions, or Tags (Tags should be a YAML list of strings.)
  • Modify names of stuff (site and non-servicelink interface names can't be changed.)
  • Change DNS servers (Any well known public one should work.)

Topology Detail

A diagram with more detail on the demo topology and port inter-connections: Topology Overview

License

MIT