Jesús Pérez 6a59d34bb1
chore: update provisioning configuration and documentation
Update configuration files, templates, and internal documentation
for the provisioning repository system.

Configuration Updates:
- KMS configuration modernization
- Plugin system settings
- Service port mappings
- Test cluster topologies
- Installation configuration examples
- VM configuration defaults
- Cedar authorization policies

Documentation Updates:
- Library module documentation
- Extension API guides
- AI system documentation
- Service management guides
- Test environment setup
- Plugin usage guides
- Validator configuration documentation

All changes are backward compatible.
2025-12-11 21:50:42 +00:00

384 lines
22 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML>
<html lang="en" class="ayu sidebar-visible" dir="ltr">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Development Overview - Provisioning Platform Documentation</title>
<!-- Custom HTML head -->
<meta name="description" content="Complete documentation for the Provisioning Platform - Infrastructure automation with Nushell, KCL, and Rust">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff">
<link rel="icon" href="../favicon.svg">
<link rel="shortcut icon" href="../favicon.png">
<link rel="stylesheet" href="../css/variables.css">
<link rel="stylesheet" href="../css/general.css">
<link rel="stylesheet" href="../css/chrome.css">
<link rel="stylesheet" href="../css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" id="highlight-css" href="../highlight.css">
<link rel="stylesheet" id="tomorrow-night-css" href="../tomorrow-night.css">
<link rel="stylesheet" id="ayu-highlight-css" href="../ayu-highlight.css">
<!-- Custom theme stylesheets -->
<!-- Provide site root and default themes to javascript -->
<script>
const path_to_root = "../";
const default_light_theme = "ayu";
const default_dark_theme = "navy";
</script>
<!-- Start loading toc.js asap -->
<script src="../toc.js"></script>
</head>
<body>
<div id="mdbook-help-container">
<div id="mdbook-help-popup">
<h2 class="mdbook-help-title">Keyboard shortcuts</h2>
<div>
<p>Press <kbd></kbd> or <kbd></kbd> to navigate between chapters</p>
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
<p>Press <kbd>?</kbd> to show this help</p>
<p>Press <kbd>Esc</kbd> to hide this help</p>
</div>
</div>
</div>
<div id="body-container">
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
let theme = localStorage.getItem('mdbook-theme');
let sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
const default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? default_dark_theme : default_light_theme;
let theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
const html = document.documentElement;
html.classList.remove('ayu')
html.classList.add(theme);
html.classList.add("js");
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
let sidebar = null;
const sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<!-- populated by js -->
<mdbook-sidebar-scrollbox class="sidebar-scrollbox"></mdbook-sidebar-scrollbox>
<noscript>
<iframe class="sidebar-iframe-outer" src="../toc.html"></iframe>
</noscript>
<div id="sidebar-resize-handle" class="sidebar-resize-handle">
<div class="sidebar-resize-indicator"></div>
</div>
</nav>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="default_theme">Auto</button></li>
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search (`/`)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="/ s" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">Provisioning Platform Documentation</h1>
<div class="right-buttons">
<a href="../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
<a href="https://github.com/provisioning/provisioning-platform" title="Git repository" aria-label="Git repository">
<i id="git-repository-button" class="fa fa-github"></i>
</a>
<a href="https://github.com/provisioning/provisioning-platform/edit/main/provisioning/docs/src/development/README.md" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="developer-documentation"><a class="header" href="#developer-documentation">Developer Documentation</a></h1>
<p>This directory contains comprehensive developer documentation for the provisioning projects new structure and development workflows.</p>
<h2 id="documentation-suite"><a class="header" href="#documentation-suite">Documentation Suite</a></h2>
<h3 id="core-guides"><a class="header" href="#core-guides">Core Guides</a></h3>
<ol>
<li><strong><a href="project-structure.html">Project Structure Guide</a></strong> - Complete overview of the new vs existing structure, directory organization, and navigation guide</li>
<li><strong><a href="build-system.html">Build System Documentation</a></strong> - Comprehensive Makefile reference with 40+ targets, build tools, and cross-platform compilation</li>
<li><strong><a href="workspace-management.html">Workspace Management Guide</a></strong> - Development workspace setup, path resolution system, and runtime management</li>
<li><strong><a href="workflow.html">Development Workflow Guide</a></strong> - Daily development patterns, coding practices, testing strategies, and debugging techniques</li>
</ol>
<h3 id="advanced-topics"><a class="header" href="#advanced-topics">Advanced Topics</a></h3>
<ol start="5">
<li><strong><a href="extensions.html">Extension Development Guide</a></strong> - Creating providers, task services, and clusters with templates and testing frameworks</li>
<li><strong><a href="distribution-process.html">Distribution Process Documentation</a></strong> - Release workflows, package generation, multi-platform distribution, and rollback procedures</li>
<li><strong><a href="configuration.html">Configuration Management</a></strong> - Configuration architecture, environment-specific settings, validation, and migration strategies</li>
<li><strong><a href="integration.html">Integration Guide</a></strong> - How new structure integrates with existing systems, API compatibility, and deployment considerations</li>
</ol>
<h2 id="quick-start"><a class="header" href="#quick-start">Quick Start</a></h2>
<h3 id="for-new-developers"><a class="header" href="#for-new-developers">For New Developers</a></h3>
<ol>
<li><strong>Setup Environment</strong>: Follow <a href="workspace-management.html#setup-and-initialization">Workspace Management Guide</a></li>
<li><strong>Understand Structure</strong>: Read <a href="project-structure.html#overview">Project Structure Guide</a></li>
<li><strong>Learn Workflows</strong>: Study <a href="workflow.html#daily-development-workflow">Development Workflow Guide</a></li>
<li><strong>Build System</strong>: Familiarize with <a href="build-system.html#quick-start">Build System Documentation</a></li>
</ol>
<h3 id="for-extension-developers"><a class="header" href="#for-extension-developers">For Extension Developers</a></h3>
<ol>
<li><strong>Extension Types</strong>: Understand <a href="extensions.html#extension-types">Extension Development Guide</a></li>
<li><strong>Templates</strong>: Use templates in <code>workspace/extensions/*/template/</code></li>
<li><strong>Testing</strong>: Follow <a href="extensions.html#testing-and-validation">Extension Development Guide</a></li>
<li><strong>Publishing</strong>: Review <a href="extensions.html#publishing-and-distribution">Extension Development Guide</a></li>
</ol>
<h3 id="for-system-administrators"><a class="header" href="#for-system-administrators">For System Administrators</a></h3>
<ol>
<li><strong>Configuration</strong>: Master <a href="configuration.html#configuration-architecture">Configuration Management</a></li>
<li><strong>Distribution</strong>: Learn <a href="distribution-process.html#deployment-considerations">Distribution Process Documentation</a></li>
<li><strong>Integration</strong>: Study <a href="integration.html#deployment-considerations">Integration Guide</a></li>
<li><strong>Monitoring</strong>: Review <a href="integration.html#monitoring-and-observability">Integration Guide</a></li>
</ol>
<h2 id="architecture-overview"><a class="header" href="#architecture-overview">Architecture Overview</a></h2>
<p>Provisioning has evolved to support a dual-organization approach:</p>
<ul>
<li><strong><code>src/</code></strong>: Development-focused structure with build tools and core components</li>
<li><strong><code>workspace/</code></strong>: Development workspace with isolated environments and tools</li>
<li><strong>Legacy</strong>: Preserved existing functionality for backward compatibility</li>
</ul>
<h2 id="key-features"><a class="header" href="#key-features">Key Features</a></h2>
<h3 id="development-efficiency"><a class="header" href="#development-efficiency">Development Efficiency</a></h3>
<ul>
<li><strong>Comprehensive Build System</strong>: 40+ Makefile targets for all development needs</li>
<li><strong>Workspace Isolation</strong>: Per-developer isolated environments</li>
<li><strong>Hot Reloading</strong>: Development-time hot reloading support</li>
</ul>
<h3 id="production-reliability"><a class="header" href="#production-reliability">Production Reliability</a></h3>
<ul>
<li><strong>Backward Compatibility</strong>: All existing functionality preserved</li>
<li><strong>Hybrid Architecture</strong>: Rust orchestrator + Nushell business logic</li>
<li><strong>Configuration-Driven</strong>: Complete migration from ENV to TOML configuration</li>
<li><strong>Zero-Downtime Deployment</strong>: Seamless integration and migration strategies</li>
</ul>
<h3 id="extensibility"><a class="header" href="#extensibility">Extensibility</a></h3>
<ul>
<li><strong>Template-Based Development</strong>: Comprehensive templates for all extension types</li>
<li><strong>Type-Safe Configuration</strong>: KCL schemas with validation</li>
<li><strong>Multi-Platform Support</strong>: Cross-platform compilation and distribution</li>
<li><strong>API Versioning</strong>: Backward-compatible API evolution</li>
</ul>
<h2 id="development-tools"><a class="header" href="#development-tools">Development Tools</a></h2>
<h3 id="build-system-srctools"><a class="header" href="#build-system-srctools">Build System (<code>src/tools/</code>)</a></h3>
<ul>
<li><strong>Makefile</strong>: 40+ targets for comprehensive build management</li>
<li><strong>Cross-Compilation</strong>: Support for Linux, macOS, Windows</li>
<li><strong>Distribution</strong>: Automated package generation and validation</li>
<li><strong>Release Management</strong>: Complete CI/CD integration</li>
</ul>
<h3 id="workspace-tools-workspacetools"><a class="header" href="#workspace-tools-workspacetools">Workspace Tools (<code>workspace/tools/</code>)</a></h3>
<ul>
<li><strong>workspace.nu</strong>: Unified workspace management interface</li>
<li><strong>Path Resolution</strong>: Smart path resolution with workspace awareness</li>
<li><strong>Health Monitoring</strong>: Comprehensive health checks with automatic repairs</li>
<li><strong>Extension Development</strong>: Template-based extension development</li>
</ul>
<h3 id="migration-tools"><a class="header" href="#migration-tools">Migration Tools</a></h3>
<ul>
<li><strong>Configuration Migration</strong>: ENV to TOML migration utilities</li>
<li><strong>Data Migration</strong>: Database migration strategies and tools</li>
<li><strong>Validation</strong>: Comprehensive migration validation and verification</li>
</ul>
<h2 id="best-practices"><a class="header" href="#best-practices">Best Practices</a></h2>
<h3 id="code-quality"><a class="header" href="#code-quality">Code Quality</a></h3>
<ul>
<li><strong>Configuration-Driven</strong>: Never hardcode, always configure</li>
<li><strong>Comprehensive Testing</strong>: Unit, integration, and end-to-end testing</li>
<li><strong>Error Handling</strong>: Comprehensive error context and recovery</li>
<li><strong>Documentation</strong>: Self-documenting code with comprehensive guides</li>
</ul>
<h3 id="development-process"><a class="header" href="#development-process">Development Process</a></h3>
<ul>
<li><strong>Test-First Development</strong>: Write tests before implementation</li>
<li><strong>Incremental Migration</strong>: Gradual transition without disruption</li>
<li><strong>Version Control</strong>: Semantic versioning with automated changelog</li>
<li><strong>Code Review</strong>: Comprehensive review process with quality gates</li>
</ul>
<h3 id="deployment-strategy"><a class="header" href="#deployment-strategy">Deployment Strategy</a></h3>
<ul>
<li><strong>Blue-Green Deployment</strong>: Zero-downtime deployment strategies</li>
<li><strong>Rolling Updates</strong>: Gradual deployment with health validation</li>
<li><strong>Monitoring</strong>: Comprehensive observability and alerting</li>
<li><strong>Rollback Procedures</strong>: Safe rollback and recovery mechanisms</li>
</ul>
<h2 id="support-and-troubleshooting"><a class="header" href="#support-and-troubleshooting">Support and Troubleshooting</a></h2>
<p>Each guide includes comprehensive troubleshooting sections:</p>
<ul>
<li><strong>Common Issues</strong>: Frequently encountered problems and solutions</li>
<li><strong>Debug Mode</strong>: Comprehensive debugging tools and techniques</li>
<li><strong>Performance Optimization</strong>: Performance tuning and monitoring</li>
<li><strong>Recovery Procedures</strong>: Data recovery and system repair</li>
</ul>
<h2 id="contributing"><a class="header" href="#contributing">Contributing</a></h2>
<p>When contributing to provisioning:</p>
<ol>
<li>Follow the <a href="workflow.html#collaboration-guidelines">Development Workflow Guide</a></li>
<li>Use appropriate <a href="extensions.html#best-practices">Extension Development</a> patterns</li>
<li>Ensure <a href="build-system.html#ci-cd-integration">Build System</a> compatibility</li>
<li>Maintain <a href="integration.html#api-compatibility-and-versioning">Integration</a> standards</li>
</ol>
<h2 id="migration-status"><a class="header" href="#migration-status">Migration Status</a></h2>
<p><strong>Configuration Migration Complete</strong> (2025-09-23)</p>
<ul>
<li>65+ files migrated across entire codebase</li>
<li>Configuration system migration from ENV variables to TOML files</li>
<li>Systematic migration with comprehensive validation</li>
</ul>
<p><strong>Documentation Suite Complete</strong> (2025-09-25)</p>
<ul>
<li>8 comprehensive developer guides</li>
<li>Cross-referenced documentation with practical examples</li>
<li>Complete troubleshooting and FAQ sections</li>
<li>Integration with project build system</li>
</ul>
<p>This documentation represents the culmination of the projects evolution from simple provisioning to a comprehensive, multi-language, enterprise-ready infrastructure automation platform.</p>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="../api/integration-examples.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../development/build-system.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="../api/integration-examples.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next prefetch" href="../development/build-system.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<!-- Livereload script (if served using the cli tool) -->
<script>
const wsProtocol = location.protocol === 'https:' ? 'wss:' : 'ws:';
const wsAddress = wsProtocol + "//" + location.host + "/" + "__livereload";
const socket = new WebSocket(wsAddress);
socket.onmessage = function (event) {
if (event.data === "reload") {
socket.close();
location.reload();
}
};
window.onbeforeunload = function() {
socket.close();
}
</script>
<script>
window.playground_copyable = true;
</script>
<script src="../elasticlunr.min.js"></script>
<script src="../mark.min.js"></script>
<script src="../searcher.js"></script>
<script src="../clipboard.min.js"></script>
<script src="../highlight.js"></script>
<script src="../book.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>