- JavaScript 53.5%
- Python 30%
- CSS 10.8%
- Shell 2.4%
- Jinja 2.1%
- Other 1.2%
| docs | ||
| op_capstone | ||
| .gitignore | ||
| LICENSE.txt | ||
| README.md | ||
This is no longer under development and is AS-IS!
This project was made as Paul and Oliver's senior capstone project and is subsequently no longer under development. Please feel free to copy and redistribute as outlined by the MIT license.
Objectives and outcomes
VMware has system administrators between a rock and a hard place where you can either use the slower but easier web interface or the faster but more complicated coding module, PowerCLI. Many IT problems would be solved with a way to easily automate vCenter environments. As the most used virtualization software, any vCenter automation solution would help with IT backlogging problems. The automation solution would ideally build off of VMwares recommended automation method PowerCLI, letting those that already have experience in it still benefit from an easier solution. Seeing the great benefit from a solution like this, we began thinking “how can we accomplish this?” With a clear need in the market and current trends towards low code now code, we decided that for our capstone project we would create a low code no code solution to enterprise virtualization. We chose low code no code because it is a design method in which a tool can accomplish the same power and sophistication that coding can do but in a non-coding, intuitive way. It fits the bill exactly of wanting offering automation to non-coders but not compromising in the power your providing. Specifically we chose to do so in a flowchart style for PowerCLI. Flowcharts would be built on a custom made web user interface that would be setup on a server on the users network. Blocks in the flowchart would correspond to a piece of PowerCLI code that could be attached to one another to make an automation playbook. With a playbook, users would use the web user interface to run them against a vCenter instance to automate system administration virtualization tasks. With this project we set out to enable any user regardless of coding skill level to be able to automate a VMware vCenter environment.
We ended up succeeding in our mission to bring automation to those of any skill level. Currently our application has a fully functioning web frontend, built in React, that allows users to create and save playbooks from user created blocks. These playbooks can be run against a vcenter server like any other PowerShell script. We also created a built-in editor for the application, using the same Monaco editor that VS code employs, so that users can create their playbooks and run them all in the same application. Blocks can also be assigned "types" to specify how they should handle logins and logouts (see block_docs for more.) Results from the playbooks are displayed in our "textarea" terminal, where it will also supply other information for the user such as the time it took to complete the request. On the backend we serve a Python Flask API that manages a SQL database of your playbooks and created blocks, taking into account it's inputs and position on the flowchart to make corresponding PowerShell scripts with Jinja, handles our login system, and creates Docker containers to run created scripts. With our application you can complete the same complicated activities as your would in PowerCLI but in an interactive and visual way.
Links to important documentation for the project
├── docs - All of the documentation for the project
│ ├── references - All of our references
│ ├── reflections - All of our reflections
│ ├── specifications - Specifications on the application itself
│ │ ├── block_docs - Specification for the blocks in our application
│ │ ├── Installation - Specification for installing our application
│ │ ├── login_specification - Specification for our login system in our application
│ │ ├── security_faq - Specification for commonly asked security questions
│ │ └── testing_docs - Specification for our testing methodology
│ ├── sprints - All of our sprint documentation
│ ├── structure - Our structure of the application