Skip to content

sixeyed/fleet-lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Home Fleet Manager (fleet-lab)

A bare-metal fleet-orchestration home lab. A custom Python Fleet Manager on Temporal drives the full node lifecycle: plug in a wiped NUC → MAAS provisions it → Slurm runs burn-in tests → OpenStack deploys a workload → on signal, reprovision with a different workload.

See Exploring Nscale's Fleet Operations - in a Home Lab

This repo is both the build guide (sequential phase docs) and the code for each phase as it's built.

Layout

  • docs/ — the phased build plan (see below).
  • packages/ — the Fleet Manager app as separate distributions: core (domain, adapters, workflows, store), api (FastAPI + UI), worker (Temporal activities + worker), stubs (in-memory backends), powershim (smart-plug power driver).
  • charts/ — Helm charts: fleet-manager (the app), fleet-temporal (wraps the upstream Temporal chart), fleet-keda, fleet-slurm, fleet-powershim, and a shared postgres subchart.
  • docker/ — Dockerfiles plus compose.yml to run the whole stack locally without k3d.
  • infrastructure/k3d/ — repeatable local cluster: setup.py (Temporal + KEDA), deploy.py (build + install the app), teardown.py.

Quick start

Fastest path — the whole stack locally with stub backends (no real hardware needed):

docker compose -f docker/compose.yml up --build

Open the Fleet Manager UI at http://localhost:8088 and the Temporal Web UI at http://localhost:8233. The UI's /sim page injects fake machines so you can watch the onboarding workflows drive a machine through its lifecycle.

To run on a local k3d cluster instead (Temporal + KEDA + the app):

python3 infrastructure/k3d/setup.py     # create cluster, install Temporal + KEDA
python3 infrastructure/k3d/deploy.py --build   # build images + install the app chart

Tear down the cluster with python3 infrastructure/k3d/teardown.py.

Build phases

Each doc is one phase; they're meant to be followed in order, and each phase ends in something independently demoable.

# Phase
00 Summary & end-to-end plan
01 Network config (UniFi)
02 MAAS controller
03 NUC enrolment
04 Fleet Manager app spec
05 Temporal + Postgres on k8s
06 Slurm (burn-in harness)
07 OpenStack (workload layer + reprovision swap)

License

MIT.

About

A bare-metal fleet orchestration lab for the home hyperscaler.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors