Skip to content

Latest commit

 

History

History
59 lines (48 loc) · 2.97 KB

README.md

File metadata and controls

59 lines (48 loc) · 2.97 KB

HORAO: management engine for hybrid multi-cloud environments

Python package Python package codecov

The goal of HORAO is to be able to manage tenants across various hybrid multi-cloud environments. The engine is designed to be able to manage resources across various cloud providers, such as AWS, Azure, and GCP as well as on-prem with engines like OCHAMI. One of the key design features is to provide a model-based approach to managing resources, which allows for a high level of abstraction and automation. HORAO will be able to check the current allocation state of the distributed resources, and users will be able to create reservations based on time and availability. Secondary, site administrators will be able to plan maintenance events, to validate what the impact of a maintenance event will be on the tenants.

For development please check out the Architecture and Development notes.

Installation

Prerequisites

  • Python 3.11 or higher
  • Poetry
  • A virtual environment
  • (Optional) Docker
  • (Optional) Docker-compose
  • (Optional) Redis
  • (Optional but recommended) NTP

Steps

The command line way:

1. Clone the repository
2. Create a virtual environment (`python -m venv .venv`)
3. Activate the virtual environment (`source .venv/bin/activate`)
4. Install poetry (`pip install poetry`)
5. Add the dotenv plugin to poetry (`poetry self add poetry-dotenv-plugin`)
6. Install the required packages (`poetry install`)
4. Run the project
  a. `poetry run python horao/main.py`
  b. `poetry run gunicorn horao:init -k uvicorn.workers.UvicornWorker --reload`

The docker way, either use the devcontainer or run with docker-compose:

1. Clone the repository
2. Run the project
  a. `docker-compose -f docker-compose.yml build`
  b. `docker-compose -f docker-compose.yml up`

Settings

The settings are stored in a .env file. The default selected by poetry is .env which is configured for development. The following settings should be configured:

DEBUG: False #boolean, default=False; set to True to enable debug mode, very chatty
UI: False #boolean, default=False; set to True to enable the UI for the API
CORS: * #string, default=*; set to the allowed origins for CORS
PEER_SECRET: "abracadabra" #string, default=""; set the secret for authenticating peers
PEERS: "a,b,c" #string, default=""; set the comma seperated list of peers to sync with 
REDIS_URL: redis://localhost:6379/0 #string, default="redis://redis:6379/0"; set the URL for the Redis database

For all other settings, please check the relevant documentation at https://witlox.github.io/horao/.