- web
- database
- cache
- has storage
| Instance | Role | Storage | State |
|---|
OCI on native BSD — distribute instances across your cluster, rebalance when load shifts, recover when a node drops. Familiar create · run · stop · logs. From REVYTECH.
# Pull OCI image · run on native BSD
aeolus run -d --name web -p 443:443 --memory 2G registry.example/caddy:latest
François Boucher — Juno Asking Aeolus to Release the Winds (public domain)
Two isolated environments. Pick one.
OCI image in, native BSD out. Spread ensembles across nodes — distribute, rebalance, recover.
Namespace and pod labels on every ensemble. Omit them and Aeolus fills defaults so existing YAML keeps working.
An ensemble is one YAML file that declares a multi-service stack — web, database, cache, and friends — with shared lifecycle so Aeolus can distribute, rebalance, and recover the whole unit.
Declare once, scale with replicas. Storage pools hold durable data; instances attach by volume name. Standbys and read paths keep recovery honest.
# CloudBSD demo images — see github.com/cloudbsdorg/aeolus-examples
version: "1.0"
name: aeolus-blog
namespace: demo
# pod omitted → aeolus-blog-default
volumes:
- name: db-data
pool: zfs/aeolus/blog
- name: wp-data
pool: zfs/aeolus/blog
services:
- name: db
image: ghcr.io/cloudbsdorg/aeolus-mariadb:16
replicas: 1
volumes: [db-data]
# secretRef: { ladon: demo/db/password } → Ladon cluster
- name: wordpress
image: ghcr.io/cloudbsdorg/aeolus-wordpress:16
replicas: 2
depends_on: [db]
ports: ["8080:80"]
volumes: [wp-data]
An offline cluster CA issues node certificates. Nodes prove identity to each other — operators stay off the public CA.
Product hostnames such as blog.aeolus.cloudbsd.ai present certificates browsers already trust.
Publish a port, give services aliases, hit the product name from a browser. Map the same pattern onto your own nodes.
On your cluster: publish the service port, point DNS at the node that publishes it, and keep node-to-node auth on the private mesh CA.
Same muscle memory. Install the CloudBSD package that ships aeolus, then create, run, and ensemble.
# Single service
aeolus create --name api -p 8443:443 --memory 1G ./bundle
aeolus start api
aeolus ps
# Multi-service stack — same shape as ensemble.yml above
aeolus ensemble validate ./ensemble.yml
aeolus ensemble up ./ensemble.yml
aeolus ensemble status ./ensemble.yml
# Cluster mesh (nodes only — not for browsers)
aeolus cert bootstrap --cn cluster.example
aeolus cert issue-node n1
aeolus cert issue-node n2
aeolus run or group them with aeolus ensemble up.Hit a running ensemble — same distribute → rebalance → recover story, public TLS: