Portal Automation Methodology and Application Instance

Creating a Cloud based Virtual Network Lab

This begins an extensive series describing the activities necessary to completely configure a cloud based virtual network lab. For the example lab in this series, I have created a completely Linux based virtual lab providing a portal for automating BGP black hole advertisement to full BGP speakers. The lab components include BGP speakers, a BGP black-hole route advertisement speaker, an HTML/CSS based portal supported by angularjs for data binding and Flask/Python for data I/O including a NoSQL (black hole route) back end data base.  The portal supports the selection of black hole route advertisement, route withdrawal or full re-advertisement of all black hole routes contained in the NoSQL data base. 

Please bear in mind that while this series specifically describes all the steps necessary to configure the virtual lab described above, the series is more significant in conveying all of the virtual lab foundational components and the general methodologies necessary to build a model-view-controller based automation portal.
This is the first blog of a comprehensive series, in which each new post will describe configuring a subsequent step(s) in the below agenda. I expect to be adding new posts for this series semi-weekly. You may follow this blog if you wish to be notified of subsequent postings in this series.

The series scope topics will be in the following order:

  1. All of the preparatory foundational installations:
    1. server – nginx
    2. Bower: requirements
      1. requirements
        1. GIT
        2. NODEjs
        3. nam
      2. managed updates/dependencies for
        1. angularjs
        2. CSS
        3. Bootstrap
    3. Web development Framework Model-View-Controller
      1. Model
        1. Flask
        2. Python
      2. View
        1. nginx
        2. wsgi
      3. Controller
        1. Angularjs
    4. Backend Database:
      1. jquery
      2. json/bson data structure and implementation
      3. NoSQL (backend route archive): mongodb
      4. python mongodb integration: pymongo
    5. Web Developer tools
      1. Chrome Developer Tools
      2. Microsoft “Code”
    6. Linux BGP speaker utility: Quagga BGP
    7. Linux Black Hole Advertiser utility: ExaBGP
  2. Directory structures:
    1. virtual environment (virtualenv) container
      1. python
      2. flask
      3. uwsgi
    2. Bower project
      1. Document source code
        1. Flask/Python
      2. templates
        1. CSS
        2. html
      3. static/js
        1. angularjs
  3. Lab Architecture
  4. Portal presentation illustration and functional Operation
  5. Basic BGP configuration
    1. Configure Linux BGP speakers: Quagga
    2. Configure Linux Black Hole route advertiser: ExaBGP
  6. Portal
    1. View: html code and CSS files
    2. Controller: Angularjs components
      1. script code
      2. Angularjs scope concepts and application
    3. Model: Flask/Python data handler code
  7. Backend Database:
    1. NoSQL db and collection structure
  8. Integration: View-Controller-Model process/execution flow
  9. Tool usage
    1. Troubleshooting with Chrome Developer Tools
    2. coding with Microsoft “Code”