https://github.com/ktp0li/crocum
OpenNebula-based PaaS for deployment and checking network labs
https://github.com/ktp0li/crocum
opennebula pytest qemu-guest-agent terraform testinfra
Last synced: 5 months ago
JSON representation
OpenNebula-based PaaS for deployment and checking network labs
- Host: GitHub
- URL: https://github.com/ktp0li/crocum
- Owner: ktp0li
- License: mit
- Created: 2022-11-08T21:18:33.000Z (over 2 years ago)
- Default Branch: fastapi
- Last Pushed: 2023-07-10T11:11:18.000Z (almost 2 years ago)
- Last Synced: 2023-07-10T12:27:11.662Z (almost 2 years ago)
- Topics: opennebula, pytest, qemu-guest-agent, terraform, testinfra
- Language: Python
- Homepage:
- Size: 146 KB
- Stars: 7
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Test instance: crocum.ktp0li.su [WIP, ip whitelist]
## Why?
~~Because I can.~~ None of the existing solutions on the market, whether for personal or corporate use, can automate the checking of labs. I was very sad to see my teachers spending hours on manual checks. Crocum is suitable for both personal and corporate use, in which case I take care of the servers, the client only needs to use the provided API.## Architerture
- #### OpenNebula
Used for globally control VMs, nets, storage, etc on multiple hosts. It is also ideal for horizontal scaling.
- #### Terraform
Used for declarative description of labs infra (VMs, nets, address ranges, templates, etc).
- #### PyTest & QEMU Guest Agent
VMs are in isolated networks, making it impossible to use Ansible/Salt. So I decided to use for checking purposes tests written on PyTest with module testinfra. Then tests are run on VMs using QEMU Guest Agent, tracing their output.
- #### ~~Flask~~ FastAPI (WIP)
Crocum's final form, allowing create, destroy and check labs by one request. PostgreSQL is used for storing info about users and labs.- #### DB model
Coming soon...
## Example of lab (named lab1)Terraform configs for this lab are stored in ./terraform/lab1, tests are stored in ./tests
## TODO
- [X] Write a delightful README
- [X] Deploy Crocum on my home server
- [X] Finalize qemu-ga module for API
- [ ] Rewrite API on FastAPI
- [ ] DOCKERIZE!!111!!
- [ ] Deploy a pretty cluster of >= 3 OpenNebula instances
- [ ] Fix phantom problem with Terraform (troubles with OpenNebula provider???)
- [ ] Draw cute logo
- [ ] Maybe create simple frontend???