Skip to content

DCMattyG/brahma-project

Repository files navigation

brahma

Cisco ACI deployment...SIMPLIFIED!

Business/Technical Challenge

One of the most challenging hurdles for customers to adopting ACI as a technology, is the initial setup/configuration of ACI...implementing networking with a GUI when the customer has used CLI based configurations for many times decades.

This project is being developed to provide a more seamless transition to ACI for customers by simplifying the initial setup, taking the vast majority of the most common implementation requirements of customers and making all of that complexity disappear.

You want ACI for your software-define networking? You don't care about every little setting and just want it up and running quickly, without clicking between dozens of different tabs and windows? Brahma is for YOU!

Proposed Solution

Brahma provide an EXTREMELY easy to use CLI and SaaS interface that takes the unfamiliar feeling of ACI away, and replaces it with a sense of satisfaction knowing that you have the best SDN in the world up and running is mere minutes!

Just create a token with CLI, login to the SaaS dashboard, configure, and apply!

Cisco Products Technologies/ Services

Our solution will levegerage the following Cisco technologies

Team Members

Solution Components

Brahma is comprised of two major componest; a CLI front-end, and a SaaS back-end.

The brahma-cli component is written in Python. Python was chosen because Brahma leverages the ACI Cobra SDK to read and apply configuration to ACI environments. Python made it extremely simply to integrate the components together. The brahma-cli also uses ArgParse, so it can be used much like many of your favorite CLI's from other vendors (AWS as an example).

The SaaS back-end is written in Angular (Javascript) and served out via NodeJS. Brahma also uses the Cisco-UI kit to skin the dashboard so that it looks and feels like many other Cisco UI'a. Angular made rapid development a snap as the Angular CLI can quickly build out skeleton framework in a single command, as well as expand with additional components & services in a similar fashion. NodeJS enables a simple API interface for both the brahma-cli as well as the internal web services to communicate.

All of these components can be nicely containerized allowing extreme ease in distributing and maintaining the Brahma code/program. Docker-Compose adds yet another level where Docker networks and persistent volumes can also be spun up simultaneously so all of the many Brahma components can go from zero to fully running in about a minute.

All data is stored in a MongoDB database that is also running in Docker via Docker-Compose. Since Brahma is dealing with JSON formats and API calls, a document DB such as MongoDB was the ideal choice. Not to mention the phenomenal support & integration with NodeJS.

CLI Usage (after server below is operational)

  1. Run 'brahma-cli -n' (create a new Brahma token)
  2. Navigate to local running SaaS service and paste in your token
  3. Throw your config settings into the wizard and save
  4. Run 'brahma-cli -a' to apply the settings to ACI
  5. Done!

Prerequisites

  • Docker 18.x (or higher)
  • Docker-Compose 1.25.x (or higher)
  • Node 8.x (or higher)
  • Angular CLI 7.x (or higher)
  • Python 3.x
  • ACI Cobra SDK (https://<apic>/cobra/_downloads/)

Installation

For Server:
git clone https://github.com/DCMattyG/brahma-project.git
cd brahma-project

npm install -g @angular/cli npm install

pushd server npm install popd

sudo docker volume create mongo_data sudo docker volume create mongo_config ./brahma-server.sh -compose -up

For CLI:
virtualenv -p python3 venv source venv/bin/activate pushd brahma-project/cli python3 setup.py install popd

For Cobra SDK and ACI Models (downloaded from APIC): pip install acicobra-4.2... acimodel-4.2...

Environment Variables for Testing:
export BRAHMA_URL=<url> (e.g. localhost)
export BRAHMA_PORT=<port> (e.g. 3000)

Documentation

License

Provided under Cisco Sample Code License, for details see LICENSE

Code of Conduct

Our code of conduct is available here

Contributing

See our contributing guidelines here

About

Brahma Angular Frontend and NodeJS/Express Backend

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published