1.6 KiB
Supervisor
A job execution supervisor that queues jobs to runners over redis and returns their output. It provides an OpenRPC server for remote job dispatching. The openrpc server requires authorization via a shared secret key. Secret keys are scoped to grant one of three levels of access: Admin, Registrar (can register runners), User (can use supervisor).
Jobs contain scripts, some env vars, an identifier of the runner to execute the script and signatures. The supervisor also verifies the signatures, however access control based on who the signatories of a script is handled by the runner logic.
Usage
The supervisor needs an admin key to be configured to get started.
cargo run -- --admin-secret <SECRET>
You can also use the run script which uses the .env file to get the admin key.
./scripts/run.sh
The scripts directory also offers other scripts for building testing etc.
Functionality
Beyond the job functionality, the supervisor also provides functionality for managing keys and registering runners. Runner registration simply means the supervisor becomes aware that a certain runner is being run and listening to it's queue. The The full spec can be seen in openrpc.json.
OpenRPC
Server
The supervisor automatically starts an OpenRPC server on 127.0.0.1:3030 that exposes all supervisor functionality via JSON-RPC.
Example JSON-RPC Call
curl -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"list_runners","id":1}' \
http://127.0.0.1:3030
Client
The repository also offers OpenRPC Client for supervisor compatible with WASM targets as well.