Cisco ACI deployment...SIMPLIFIED!
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!
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!
Our solution will levegerage the following Cisco technologies
- Tim Miller [email protected] - GVE (Americas/US Comm South)
- Tyson Scott [email protected] - GES (MWA)
- Mike Finch [email protected] - GES (South)
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.
- Run 'brahma-cli -n' (create a new Brahma token)
- Navigate to local running SaaS service and paste in your token
- Throw your config settings into the wizard and save
- Run 'brahma-cli -a' to apply the settings to ACI
- Done!
- 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/)
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)
- ACI Cobra SDK and Documentation
- ACI Policy Model (https://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/policy-model-guide/b-Cisco-ACI-Policy-Model-Guide.html)
- ACI Management Information Model 4.2 (https://developer.cisco.com/site/apic-mim-ref-api/?version=4.2(1))
Provided under Cisco Sample Code License, for details see LICENSE
Our code of conduct is available here
See our contributing guidelines here