Skip to the content.

Lab bootstrap — one cluster, full stack

StrataBench can own the full lab loop: discover nodes → install tools → deploy MinIO → open firewall → benchmark → re-sync after code changes.

What the repo handles now

Task Command
Profile / YAML / params Built-in profiles/ + NLP guide / agent
Install warp, fio on nodes stratabench lab bootstrap
vdbench Detect + optional tools.vdbench_path symlink (manual tarball)
Multi-node topology topology: shard in lab.yaml + lab run
Deploy MinIO / S3 stratabench lab deploy-s3 or bootstrap (docker)
Remote agent runs stratabench-agent via bootstrap + lab run --clients
Auto-discover cluster stratabench lab discover --hosts 10.0.1.1,10.0.1.2,...
Warp download Automatic on each node during bootstrap
Credentials lab.yaml s3.access_key / secret_key (+ env export on run)
Firewall stratabench lab firewall or bootstrap --firewall
Hardware / tool check stratabench lab check
Code-change loop make build && stratabench lab sync
Results store SQLite via lab run / stratabench run

Quick start (new cluster)

On your Linux jump host (SSH access to all nodes):

git clone https://github.com/pratham-vishk/StrataBench.git
cd StrataBench
cp examples/lab.yaml.example lab.yaml
# edit clients, targets.block (/dev/sdb for HDD), and servers (only if you need S3)

make build
stratabench lab bootstrap -f lab.yaml --write-env lab.env
stratabench lab check -f lab.yaml
stratabench lab run -f lab.yaml hdd-sequential-read    # block/HDD — no S3 needed
stratabench lab run -f lab.yaml s3-cluster-rdma        # object — needs servers + MinIO
stratabench lab run -f lab.yaml app-postgres-tpc-c     # SBK — needs targets.postgres_dsn

lab run picks target, topology, and engine from the profile + targets: section in lab.yaml. You only pass the profile name.

Or with auto-discovery when you only have a host list:

stratabench lab init
stratabench lab discover -f lab.yaml --hosts 10.0.1.1,10.0.1.2,10.0.1.10,10.0.1.11
make build
stratabench lab bootstrap -f lab.yaml --firewall
stratabench lab check -f lab.yaml

After code changes (your daily loop)

make build
stratabench lab sync -f lab.yaml
stratabench lab run -f lab.yaml
# or agentic:
stratabench agent "s3 rdma object 3kb-100kb 1 hour" --clients $(grep LAB_CLIENT lab.env) --yes

Config files

File Format
lab.yaml Preferred — clients, servers, tools, firewall
lab.env Shell-style — see examples/lab.env.example

External S3 (no MinIO deploy)

If the cluster already has PowerScale / ECS / MinIO:

s3:
  deploy: external
servers:
  - host: 10.0.1.10
    port: 9000

Only install agents on clients: bootstrap skips MinIO when deploy: external.

vdbench (AFA)

vdbench is not redistributable — install on nodes manually, then:

tools:
  install_vdbench: true
  vdbench_path: /opt/vdbench/vdbench

Prerequisites

Shell scripts (optional)

Scripts in scripts/lab-*.sh wrap the same flow for CI; prefer stratabench lab CLI.

Troubleshooting

Issue Fix
warp not found stratabench lab bootstrap
Agent unreachable ufw / firewall: stratabench lab firewall --firewall
Warp auth error Match WARP_ACCESS_KEY in lab.yaml and MinIO
vdbench missing Install tarball; set vdbench_path

See also DELL-LAB.md and DELL-LAB-VALIDATION.md.