2 lines
7.8 KiB
Markdown
Raw Normal View History

# Configurations\n\nMode-specific Nickel configurations for all services (NOT manually edited).\n\n## Purpose\n\nConfigurations are **automatically generated** by composing:\n1. Service base defaults (defaults/{service}-defaults.ncl)\n2. Mode overlay (defaults/deployment/{mode}-defaults.ncl)\n3. User customization (values/{service}.{mode}.ncl)\n4. Schema validation (schemas/{service}.ncl)\n5. Constraint validation (validators/{service}-validator.ncl)\n\n## File Organization\n\n```\nconfigs/\n├── README.md # This file\n├── orchestrator.solo.ncl # Orchestrator solo mode\n├── orchestrator.multiuser.ncl # Orchestrator multi-user mode\n├── orchestrator.cicd.ncl # Orchestrator CI/CD mode\n├── orchestrator.enterprise.ncl # Orchestrator enterprise mode\n├── control-center.solo.ncl\n├── control-center.multiuser.ncl\n├── control-center.cicd.ncl\n├── control-center.enterprise.ncl\n├── mcp-server.solo.ncl\n├── mcp-server.multiuser.ncl\n├── mcp-server.cicd.ncl\n├── mcp-server.enterprise.ncl\n├── installer.solo.ncl\n├── installer.multiuser.ncl\n├── installer.cicd.ncl\n└── installer.enterprise.ncl\n```\n\n## Configuration Composition\n\nEach config is built from layers:\n\n```\n# configs/orchestrator.solo.ncl\nlet schemas = import "../schemas/orchestrator.ncl" in\nlet defaults = import "../defaults/orchestrator-defaults.ncl" in\nlet solo_defaults = import "../defaults/deployment/solo-defaults.ncl" in\nlet validators = import "../validators/orchestrator-validator.ncl" in\n\n{\n # Merge: base defaults + mode overrides + user customization\n orchestrator = defaults.orchestrator & solo_defaults.services.orchestrator & {\n # User customization goes here (from values/orchestrator.solo.ncl)\n },\n} | schemas.OrchestratorConfig # Apply schema validation\n```\n\n## Example Configuration\n\n### Base Defaults\n\n```\n# defaults/orchestrator-defaults.ncl\norchestrator = {\n workspace = {\n name = "default",\n path = "/var/lib/provisioning/orchestrator",\n enabled = true,\n },\n server = {\n host = "127.0.0.1",\n port = 9090,\n workers = 4,\n },\n queue = {\n max_concurrent_tasks = 5,\n },\n}\n```\n\n### Solo Mode Override\n\n```\n# defaults/deployment/solo-defaults.ncl\nservices.orchestrator = {\n workers = 2, # Fewer workers\n queue_max_concurrent_tasks = 3, # Limited concurrency\n storage_backend = 'filesystem,\n}\n```\n\n### Generated Config\n\n```\n# configs/orchestrator.solo.ncl (auto-generated)\n{\n orchestrator = {\n workspace = {\n name = "default", # From base defaults\n path = "/var/lib/provisioning/orchestrator",\n enabled = true,\n },\n server = {\n host = "127.0.0.1", # From base defaults\n port = 9090, # From base defaults\n workers = 2, # OVERRIDDEN by solo mode\n },\n queue = {\n max_concurrent_tasks = 3, # OVERRIDDEN by solo mode\n },\n },\n}\n```\n\n## Updating Configurations\n\n**DO NOT manually edit** configs/ files. Instead:\n\n1. **Modify service defaults** (defaults/{service}-defaults.ncl)\n2. **Modify mode overrides** (defaults/deployment/{mode}-defaults.ncl)\n3. **Modify user values** (values/{service}.{mode}.ncl)\n4. **Regenerate configs** (via TypeDialog or manual rebuild)\n\n### Regenerating Configs\n\n#### Via TypeDialog (Recommended)\n\n```\nnu provisioning/.typedialog/provisioning/platform/scripts/configure.nu orchestrator solo\n```\n\nAutomatically:\n1. Loads existing config as defaults\n2. Shows form with validated constraints\n3. User edits configuration\n4. Generates updated config\n\n#### Manual Rebuild\n\n```\n# (Future) Script to rebuild all configs from sources\nnu provisioning/.typedialog/provisioning/platform/scripts/generate-configs.nu orchestrator solo\n```\n\n## Config Types\n\n### Orchestrator (Workflow Engine)\n- Workspace configuration\n- Server settings\n- Storage backen