Anuket Project
Lab Requirements
This page describes the requirements for a lab to participate in Lab as a Service. The reference implementation can be found at: https://git.opnfv.org/laas-reflab/tree/
The API
The dashboard is the single source of truth, and communicates tasks to the lab through the api. You can read the api spec on this page: Developer Documentation
The API is how the dashboard tells the lab about a booking from a user, and how the lab communicates information back to the user. To participate in LaaS as a lab, you need to implement your end of the API. The rest of the document describes the pre-built backend system that the LaaS project has built, but you are free to implement your own system if the pre-built one does not fit your needs.
Reference Architecture
Networking Requirements
- Stackstorm must be able to reach everything:
- The LaaS dashboard on the internet
- The IPMI interfaces on the LaaS servers
- The mangement IP of the LaaS switches
- The management and public IPs of the LaaS servers
- FOG
- The VPN server
- FOG must be able to PXE boot the LaaS servers
- The gateway / vpn server must:
- Route vpn traffic to / from the LaaS machines
- Allow the LaaS servers to reach the internet
- Serve DHCP and DNS such that:
- A server is always reachable by its hostname, regardless of what network it is on
- Servers will always PXE boot through FOG
Description
The reference implementation relies heavily on Stackstorm, a nice automation server: https://stackstorm.com/. This is what does all the communication with the dashboard API and configures the switches + servers as required. This is where all the code and logic of the reference implementation lives.
FOG (Free Opensource Ghost) is used as a way to quickly backup and restore disk images: https://fogproject.org/. This is how we reinstall the servers on a new booking: FOG will PXE boot the servers and write a clean disk image.
A more detailed description of how deployments work can be found in the reflab repo: https://git.opnfv.org/laas-reflab/tree/README