- Remove KCL ecosystem (~220 files deleted) - Migrate all infrastructure to Nickel schema system - Consolidate documentation: legacy docs → provisioning/docs/src/ - Add CI/CD workflows (.github/) and Rust build config (.cargo/) - Update core system for Nickel schema parsing - Update README.md and CHANGES.md for v5.0.0 release - Fix pre-commit hooks: end-of-file, trailing-whitespace - Breaking changes: KCL workspaces require migration - Migration bridge available in docs/src/development/
6.6 KiB
Workspace Setup Guide
This guide shows you how to set up a new infrastructure workspace with Nickel-based configuration and auto-generated documentation.
Quick Start
1. Create a New Workspace (Automatic)
# Interactive workspace creation with prompts
provisioning workspace init
# Or non-interactive with explicit path
provisioning workspace init my_workspace /path/to/my_workspace
When you run provisioning workspace init, the system automatically:
- ✅ Creates Nickel-based configuration (
config/config.ncl) - ✅ Sets up infrastructure directories with Nickel files (
infra/default/) - ✅ Generates 4 workspace guides (deployment, configuration, troubleshooting, README)
- ✅ Configures local provider as default
- ✅ Creates .gitignore for workspace
2. Workspace Structure (Auto-Generated)
After running workspace init, your workspace has this structure:
my_workspace/
├── config/
│ ├── config.ncl # Master Nickel configuration
│ ├── providers/
│ └── platform/
│
├── infra/
│ └── default/
│ ├── main.ncl # Infrastructure definition
│ └── servers.ncl # Server configurations
│
├── docs/ # ✨ AUTO-GENERATED GUIDES
│ ├── README.md # Workspace overview & quick start
│ ├── deployment-guide.md # Step-by-step deployment
│ ├── configuration-guide.md # Configuration reference
│ └── troubleshooting.md # Common issues & solutions
│
├── .providers/ # Provider state & cache
├── .kms/ # KMS data
├── .provisioning/ # Workspace metadata
└── workspace.nu # Utility scripts
3. Understanding Nickel Configuration
The config/config.ncl file is the master configuration for your workspace:
{
workspace = {
name = "my_workspace",
path = "/path/to/my_workspace",
description = "Workspace: my_workspace",
metadata = {
owner = "your_username",
created = "2025-01-07T19:30:00Z",
environment = "development",
},
},
providers = {
local = {
name = "local",
enabled = true,
workspace = "my_workspace",
auth = { interface = "local" },
paths = {
base = ".providers/local",
cache = ".providers/local/cache",
state = ".providers/local/state",
},
},
},
}
4. Auto-Generated Documentation
Every workspace gets 4 auto-generated guides tailored to your specific configuration:
README.md - Overview with workspace structure and quick start deployment-guide.md - Step-by-step deployment instructions for your infrastructure configuration-guide.md - Configuration reference specific to your workspace troubleshooting.md - Common issues and solutions for your setup
These guides are automatically generated based on your workspace's:
- Configured providers
- Infrastructure definitions
- Server configurations
- Taskservs and services
5. Customize Your Workspace
After creation, edit the Nickel configuration files:
# Edit master configuration
vim config/config.ncl
# Edit infrastructure definition
vim infra/default/main.ncl
# Edit server definitions
vim infra/default/servers.ncl
# Validate Nickel syntax
nickel typecheck config/config.ncl
Next Steps After Workspace Creation
1. Read Your Auto-Generated Documentation
Each workspace gets 4 auto-generated guides in the docs/ directory:
cd my_workspace
# Overview and quick start
cat docs/README.md
# Step-by-step deployment
cat docs/deployment-guide.md
# Configuration reference
cat docs/configuration-guide.md
# Common issues and solutions
cat docs/troubleshooting.md
2. Customize Your Configuration
Edit the Nickel configuration files to suit your needs:
# Master configuration (providers, settings)
vim config/config.ncl
# Infrastructure definition
vim infra/default/main.ncl
# Server configurations
vim infra/default/servers.ncl
3. Validate Your Configuration
# Check Nickel syntax
nickel typecheck config/config.ncl
nickel typecheck infra/default/main.ncl
# Validate with provisioning system
provisioning validate config
4. Add Multiple Infrastructures
To add more infrastructure environments:
# Create new infrastructure directory
mkdir infra/production
mkdir infra/staging
# Create Nickel files for each infrastructure
cp infra/default/main.ncl infra/production/main.ncl
cp infra/default/servers.ncl infra/production/servers.ncl
# Edit them for your specific needs
vim infra/production/servers.ncl
5. Configure Providers
To use cloud providers (UpCloud, AWS, etc.), update config/config.ncl:
providers = {
upcloud = {
name = "upcloud",
enabled = true, # Set to true to enable
workspace = "my_workspace",
auth = { interface = "API" },
paths = {
base = ".providers/upcloud",
cache = ".providers/upcloud/cache",
state = ".providers/upcloud/state",
},
api = {
url = "https://api.upcloud.com/1.3",
timeout = 30,
},
},
}
Workspace Management Commands
List Workspaces
provisioning workspace list
Activate a Workspace
provisioning workspace activate my_workspace
Show Active Workspace
provisioning workspace active
Deploy Infrastructure
# Dry-run first (check mode)
provisioning -c server create
# Actually create servers
provisioning server create
# List created servers
provisioning server list
Troubleshooting
Invalid Nickel Syntax
# Check syntax
nickel typecheck config/config.ncl
# Example error and solution
Error: Type checking failed
Solution: Fix the syntax error shown and retry
Configuration Issues
Refer to the auto-generated docs/troubleshooting.md in your workspace for:
- Authentication & credentials issues
- Server deployment problems
- Configuration validation errors
- Network connectivity issues
- Performance issues
Getting Help
- Consult workspace guides: Check the
docs/directory - Check the docs:
provisioning --help,provisioning workspace --help - Enable debug mode:
provisioning --debug server create - Review logs: Check logs for detailed error information
Next Steps
- Review auto-generated guides in
docs/ - Customize configuration in Nickel files
- Test with dry-run before deployment
- Deploy infrastructure
- Monitor and maintain your workspace
For detailed deployment instructions, see docs/deployment-guide.md in your workspace.