- Table of Contents
- What is brickbox.io?
- Getting Started
- Continuous Integration (CI)
- Continuous Deployment (CD)
- Directory Structure
- Definitions
brickbox.io is an artificial intelligence (AI) infrastructure provider and management platform. The goal of brickbox.io is to connection individuals working on the latest in cutting edge technology with the hardware they need to rain AI models.
The web interface is built on the Django framework.
sudo apt update && sudo apt upgrade -y
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.10 -y
sudo apt install nginx -y
sudo apt-get install python3.10-venv -y
python3.10 -m venv bbenv
source bbenv/bin/activate
python -m pip install -r requirements.txt
To update requirements.txt after a new package is installed
python3 -m pip freeze -l > requirements.txt
Uvicorn is used as the ASGI server to provide async capabilities. When changes are made use systemctl restart gunicorn
to update the service.
Files including images and .js are servered from the location specified in Nginx. Rull the command python3 manage.py collectstatic
to automaticly copy static files from the project directory to the location specified in the settings folder.
To facilitate the rapid integration of new code the brickbox.io DevOps process includes a set of continuous integration tools. These tools are a combination of both best practices and enforced code policies with the aid of GitHub Actions.
To quickly see that services are operational the app django-health-check has been added.
.
βββ .github # CI/CD using GitHub Actions and other functions.
βββ bb_accounts # User account creation and management.
βββ bb_api # API framework and endpoints.
βββ bb_dashboard # Main user interfaces.
βββ bb_data # Contains the database model definitions.
βββ bb_public # Any publicly accessible landing/info pages.
βββ bb_tasks # Task management framework, celery.
βββ bb_vm # Virtual machine component.
βββ brickbox # Django project settings and configuration.
βββ puller # Internal CI/CD tools.
The platform has a combination of both passive and active components. These are broken into either endpoints or background tasks. The majority of functionality occurs under bb_tasks.
Colocation Client
Represents an idividual or entity that owns one or more servers located within brickbox. A client can be controlled by one or more users. A "client" is singular while their servers/units can be plural.
Colocation Owner
The user that owns the colocation client.