2025-10-07 17:36:03 +01:00
2025-10-07 11:20:26 +01:00
2025-10-07 11:20:26 +01:00
2025-10-07 11:05:08 +01:00
2025-10-07 11:20:26 +01:00
2025-10-07 11:05:08 +01:00

Provisioning Logo

Provisioning

Provisioning Extensions

This directory contains the extensible components of the Provisioning project. Extensions provide modular, configurable infrastructure components that can be combined to create complete deployment solutions.

Extension Types

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

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

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 KCL 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: KCL schema validation and templating

Usage Patterns

Basic Infrastructure Setup

# 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

# Multi-provider batch deployment
nu -c "use core/nulib/workflows/batch.nu *; batch submit workflows/multi_cloud.k"

# Monitor batch progress
nu -c "use core/nulib/workflows/batch.nu *; batch monitor <workflow_id>"

Workflow Management

# 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 <task_id>"

Extension Development

KCL Schema Structure

Extensions use standardized KCL schema patterns:

# Provider schema
schema ProviderName(provisioning.Storage):
    # Provider-specific fields
    provider_field: str
    check:
        len(provider_field) > 0

# Task service schema
schema TaskServiceName:
    name: str = "service-name"
    version: str
    enabled: bool = True
    # Service-specific configuration
    check:
        len(name) > 0

# Cluster schema
schema ClusterName:
    name: str = "cluster-name"
    components: [str]
    # Cluster composition
    check:
        len(components) > 0

Module Configuration

Each extension includes a kcl.mod file:

[package]
name = "extension-name"
edition = "v0.11.2"
version = "0.0.1"

[dependencies]
provisioning = { path = "../../../kcl", version = "0.0.1" }
# Additional dependencies as needed

Directory Structure

extension-name/
├── kcl/                    # KCL configuration schemas
│   ├── extension-name.k    # Main schema definition
│   ├── version.k           # Version management (optional)
│   ├── dependencies.k      # Dependencies (optional)
│   └── kcl.mod            # Module configuration
├── default/               # Default configurations
├── templates/             # Jinja2 templates (optional)
└── README.md              # Extension documentation

Quality Assurance

Validation Results

  • 43 KCL directories with comprehensive schema validation
  • 44 kcl.mod files with proper import structure
  • Syntax validation: All major components pass KCL validation
  • 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.

Description
Provisioning Extensions
Readme 7.9 MiB
Languages
Nushell 38.7%
Jinja 23.4%
Shell 21.3%
HTML 15.6%
AMPL 0.6%
Other 0.4%