Provisioning Orchestrator
A Rust-based orchestrator service that coordinates infrastructure provisioning workflows with pluggable storage backends and comprehensive migration tools.
Source:
provisioning/platform/orchestrator/
Architecture
The orchestrator implements a hybrid multi-storage approach:
- Rust Orchestrator: Handles coordination, queuing, and parallel execution
- Nushell Scripts: Execute the actual provisioning logic
- Pluggable Storage: Multiple storage backends with seamless migration
- REST API: HTTP interface for workflow submission and monitoring
Key Features
- Multi-Storage Backends: Filesystem, SurrealDB Embedded, and SurrealDB Server options
- Task Queue: Priority-based task scheduling with retry logic
- Seamless Migration: Move data between storage backends with zero downtime
- Feature Flags: Compile-time backend selection for minimal dependencies
- Parallel Execution: Multiple tasks can run concurrently
- Status Tracking: Real-time task status and progress monitoring
- Advanced Features: Authentication, audit logging, and metrics (SurrealDB)
- Nushell Integration: Seamless execution of existing provisioning scripts
- RESTful API: HTTP endpoints for workflow management
- Test Environment Service: Automated containerized testing for taskservs, servers, and clusters
- Multi-Node Support: Test complex topologies including Kubernetes and etcd clusters
- Docker Integration: Automated container lifecycle management via Docker API
Quick Start
Build and Run
Default Build (Filesystem Only):
cd provisioning/platform/orchestrator
cargo build --release
cargo run -- --port 8080 --data-dir ./data
With SurrealDB Support:
cargo build --release --features surrealdb
# Run with SurrealDB embedded
cargo run --features surrealdb -- --storage-type surrealdb-embedded --data-dir ./data
# Run with SurrealDB server
cargo run --features surrealdb -- --storage-type surrealdb-server \
--surrealdb-url ws://localhost:8000 \
--surrealdb-username admin --surrealdb-password secret
Submit Workflow
curl -X POST http://localhost:8080/workflows/servers/create \
-H "Content-Type: application/json" \
-d '{
"infra": "production",
"settings": "./settings.yaml",
"servers": ["web-01", "web-02"],
"check_mode": false,
"wait": true
}'
API Endpoints
Core Endpoints
GET /health- Service health statusGET /tasks- List all tasksGET /tasks/{id}- Get specific task status
Workflow Endpoints
POST /workflows/servers/create- Submit server creation workflowPOST /workflows/taskserv/create- Submit taskserv creation workflowPOST /workflows/cluster/create- Submit cluster creation workflow
Test Environment Endpoints
POST /test/environments/create- Create test environmentGET /test/environments- List all test environmentsGET /test/environments/{id}- Get environment detailsPOST /test/environments/{id}/run- Run tests in environmentDELETE /test/environments/{id}- Cleanup test environmentGET /test/environments/{id}/logs- Get environment logs
Test Environment Service
The orchestrator includes a comprehensive test environment service for automated containerized testing.
Test Environment Types
1. Single Taskserv
Test individual taskserv in isolated container.
2. Server Simulation
Test complete server configurations with multiple taskservs.
3. Cluster Topology
Test multi-node cluster configurations (Kubernetes, etcd, etc.).
Nushell CLI Integration
# Quick test
provisioning test quick kubernetes
# Single taskserv test
provisioning test env single postgres --auto-start --auto-cleanup
# Server simulation
provisioning test env server web-01 [containerd kubernetes cilium] --auto-start
# Cluster from template
provisioning test topology load kubernetes_3node | test env cluster kubernetes
Topology Templates
Predefined multi-node cluster topologies:
- kubernetes_3node: 3-node HA Kubernetes cluster
- kubernetes_single: All-in-one Kubernetes node
- etcd_cluster: 3-member etcd cluster
- containerd_test: Standalone containerd testing
- postgres_redis: Database stack testing
Storage Backends
| Feature | Filesystem | SurrealDB Embedded | SurrealDB Server |
|---|---|---|---|
| Dependencies | None | Local database | Remote server |
| Auth/RBAC | Basic | Advanced | Advanced |
| Real-time | No | Yes | Yes |
| Scalability | Limited | Medium | High |
| Complexity | Low | Medium | High |
| Best For | Development | Production | Distributed |
Related Documentation
- User Guide: Test Environment Guide
- Architecture: Orchestrator Architecture
- Feature Summary: Orchestrator Features