commit 16f13c5359c5d69e8f579ba197f4d59b7dcd417a Author: Jesús Pérez Date: Thu Jul 9 21:03:11 2026 +0100 init repo diff --git a/README.md b/README.md new file mode 100644 index 0000000..77f6c4c --- /dev/null +++ b/README.md @@ -0,0 +1,195 @@ +

+ Provisioning Logo +

+

+ Provisioning +

+ +# Provisioning Extensions + +This directory contains the extensible components of the [Provisioning project](https://repo.jesusperez.pro/provisioning/provisioning). Extensions provide +modular, configurable infrastructure components that can be combined to create complete deployment solutions. + +## Extension Types + +### [Providers](providers/) + +Cloud provider implementations for infrastructure provisioning: + +- **AWS**: Amazon Web Services with EC2, VPC, and EBS support +- **UpCloud**: UpCloud infrastructure with backup and server grouping +- **Local**: Local development environment simulation + +### [Task Services](taskservs/) + +Modular infrastructure services that can be installed on servers: + +- **Container Runtimes**: containerd, crio, podman, crun, youki +- **Orchestration**: kubernetes, cilium, coredns, etcd, rook-ceph +- **Development**: coder, desktop, gitea, webhook +- **Databases**: postgres, redis, external-nfs, mayastor +- **Networking**: ip-aliases, proxy, resolv, kms +- **Security**: oras, radicle + +### [Clusters](clusters/) + +Complete deployment configurations combining providers and task services: + +- **Web**: Basic web service cluster +- **OCI Registry**: Container registry with storage and security +- **Planned**: buildkit, CI/CD pipelines, git hosting, databases + +### Workflows + +Core workflow templates integrated with the orchestrator: + +- Server creation and management workflows +- Task service deployment workflows +- Cluster setup and configuration workflows +- Batch operations and multi-provider deployments +- Backup and recovery workflows + +## Architecture + +### Configuration-Driven Design + +All extensions are defined using Nickel schemas providing: + +- Type safety and validation +- Hierarchical configuration inheritance +- Modular composition capabilities +- Provider-agnostic interfaces + +### Dependency Management + +Extensions support sophisticated dependency management: + +- Service dependencies and ordering +- Resource requirements validation +- Health checks and monitoring +- Rollback and recovery capabilities + +### Integration Points + +Extensions integrate with: + +- **Core Provisioning System**: Main CLI and library functions +- **Orchestrator**: High-performance Rust coordination layer +- **Workflow System**: Batch operations and automation +- **Configuration System**: Nickel schema validation and templating + +## Usage Patterns + +### Basic Infrastructure Setup + +```bash +# 1. Generate infrastructure configuration +provisioning/core/cli/provisioning generate infra --new myproject + +# 2. Create servers using provider +provisioning/core/cli/provisioning server create --infra myproject + +# 3. Install task services +provisioning/core/cli/provisioning taskserv create kubernetes --infra myproject + +# 4. Deploy cluster services +provisioning/core/cli/provisioning cluster create web --infra myproject +``` + +### Batch Operations + +```bash +# Multi-provider batch deployment +nu -c "use core/nulib/workflows/batch.nu *; batch submit workflows/multi_cloud.ncl" + +# Monitor batch progress +nu -c "use core/nulib/workflows/batch.nu *; batch monitor " +``` + +### Workflow Management + +```bash +# List running workflows +nu -c "use core/nulib/workflows/management.nu *; workflow list" + +# Monitor specific workflow +nu -c "use core/nulib/workflows/management.nu *; workflow monitor " +``` + +## Extension Development + +### Nickel Schema Structure + +Extensions use standardized Nickel schema patterns: + +```nickel +# Provider schema +let provider_schema = { + name : String, + provider_field : String, + version : String, +} in provider_schema + +# Task service schema +let taskservice_schema = { + name : String = "service-name", + version : String, + enabled : Bool = true, +} in taskservice_schema + +# Cluster schema +let cluster_schema = { + name : String = "cluster-name", + components : Array String, +} in cluster_schema +``` + +### Module Configuration + +Each extension includes a `manifest.toml` file: + +```toml +[package] +name = "extension-name" +version = "0.0.1" + +[dependencies] +provisioning = { path = "../../../schemas", version = "0.0.1" } +# Additional dependencies as needed +``` + +### Directory Structure + +```bash +extension-name/ +├── schemas/ # Nickel configuration schemas +│ ├── extension-name.ncl # Main schema definition +│ ├── version.ncl # Version management (optional) +│ ├── dependencies.ncl # Dependencies (optional) +│ └── manifest.toml # Module configuration +├── default/ # Default configurations +├── templates/ # Jinja2 templates (optional) +└── README.md # Extension documentation +``` + +## Quality Assurance + +### Validation Results + +- **43 Nickel schema directories** with comprehensive schema validation +- **44 manifest.toml files** with proper import structure +- **Syntax validation**: All major components pass Nickel type checking +- **Schema compliance**: Follows project architecture principles (PAP) + +### Best Practices + +- Follow project architecture principles (PAP) +- Use configuration-driven approaches +- Implement comprehensive validation rules +- Provide detailed documentation +- Include usage examples +- Support batch operations +- Enable workflow orchestration + +For detailed information about specific extension types, see the documentation in each subdirectory and the main [provisioning +documentation](../../docs/). diff --git a/resources/logo-text.svg b/resources/logo-text.svg new file mode 100644 index 0000000..bef17d6 --- /dev/null +++ b/resources/logo-text.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/provisioning_logo.svg b/resources/provisioning_logo.svg new file mode 100644 index 0000000..d8320ac --- /dev/null +++ b/resources/provisioning_logo.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +