- Nushell 33.5%
- Shell 22.3%
- Jinja 17.8%
- Nickel 17.1%
- HTML 6.9%
- Other 2.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
lbipam.cilium.io/ips replaces io.cilium/lb-ipam-ips in stalwart, fleet_daemon, zot and docker_mailserver. Zero deprecated emissions remain in the catalog. BOTH SPELLINGS WORK TODAY, which is the whole reason this survived. Cilium v1.19.5 keeps the old name as LBIPAMIPKeyAlias in pkg/annotation/k8s.go — it is undocumented since v1.19 but still honoured, so nothing anywhere reveals who depends on it. When the alias is finally removed, every service still using it stops REQUESTING an address and silently takes whatever a selector-less pool offers: a working service on the wrong IP, with no error at any layer. docker_mailserver was NOT in the list I was asked for, and it is here because my own earlier grep was incomplete and produced that list. It is also the clearest case: service.yaml.j2 used the old spelling while service-private.yaml.j2 beside it already used the new one — two templates of the same component disagreeing, with nothing to reveal the split. It is the only one of the four with a LIVE service on a public FIP. fleet_daemon also sets the legacy `loadBalancerIP:` field, deprecated in k8s v1.24 and supported until removal. LEFT ALONE and named in a comment: changing two address mechanisms in one edit makes a failure impossible to attribute. Templates only — no cluster is touched. stalwart and fleet_daemon are not deployed on libre-wuji; zot and docker_mailserver are, and their live Services keep the old annotation until they are next deployed. Cilium propagates annotations onto derived Services and does not remove stale ones, so the old key lingers there even after the source is corrected. biop:lbipam-requests-are-current-and-honoured asserts both halves — current spelling, and the requested address actually held — and reports the live stragglers rather than leaving them to a grep nobody runs. Claude-Session: https://claude.ai/code/session_0188g33gGhjP3SfnXDoMAYMp |
||
| .governance | ||
| components | ||
| domains | ||
| lib | ||
| playbooks | ||
| providers | ||
| resources | ||
| scripts | ||
| workflows | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| .woodpecker.yml | ||
| CHANGES.md | ||
| README.md | ||
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:
- Hetzner: infrastructure provider
- 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 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
# 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.ncl"
# 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
Nickel Schema Structure
Extensions use standardized Nickel schema patterns:
# 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:
[package]
name = "extension-name"
version = "0.0.1"
[dependencies]
provisioning = { path = "../../../schemas", version = "0.0.1" }
# Additional dependencies as needed
Directory Structure
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.