284 lines
7 KiB
Markdown
284 lines
7 KiB
Markdown
|
|
# Workspace Generation - Quick Reference
|
||
|
|
|
||
|
|
**Updated for Nickel-based workspaces with auto-generated documentation**
|
||
|
|
|
||
|
|
## Quick Start: Create a Workspace
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Interactive mode (recommended)
|
||
|
|
provisioning workspace init
|
||
|
|
|
||
|
|
# Non-interactive mode with explicit path
|
||
|
|
provisioning workspace init my_workspace /path/to/my_workspace
|
||
|
|
|
||
|
|
# With activation
|
||
|
|
provisioning workspace init my_workspace /path/to/my_workspace --activate
|
||
|
|
```
|
||
|
|
|
||
|
|
## What Gets Created Automatically
|
||
|
|
|
||
|
|
When you run `provisioning workspace init`, the system creates:
|
||
|
|
|
||
|
|
```text
|
||
|
|
my_workspace/
|
||
|
|
├── config/
|
||
|
|
│ ├── config.ncl # Master Nickel configuration
|
||
|
|
│ ├── providers/ # Provider configurations
|
||
|
|
│ └── platform/ # Platform service configs
|
||
|
|
│
|
||
|
|
├── infra/
|
||
|
|
│ └── default/
|
||
|
|
│ ├── main.ncl # Infrastructure definition
|
||
|
|
│ └── servers.ncl # Server configurations
|
||
|
|
│
|
||
|
|
├── docs/ # ✨ AUTO-GENERATED GUIDES
|
||
|
|
│ ├── README.md # Workspace overview
|
||
|
|
│ ├── deployment-guide.md # Step-by-step deployment
|
||
|
|
│ ├── configuration-guide.md # Configuration reference
|
||
|
|
│ └── troubleshooting.md # Common issues & solutions
|
||
|
|
│
|
||
|
|
├── .providers/
|
||
|
|
├── .kms/
|
||
|
|
├── .provisioning/
|
||
|
|
└── workspace.nu # Utility scripts
|
||
|
|
```
|
||
|
|
|
||
|
|
## Key Files Created
|
||
|
|
|
||
|
|
### Master Configuration: `config/config.ncl`
|
||
|
|
|
||
|
|
```nickel
|
||
|
|
{
|
||
|
|
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",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Infrastructure: `infra/default/main.ncl`
|
||
|
|
|
||
|
|
```nickel
|
||
|
|
{
|
||
|
|
workspace_name = "my_workspace",
|
||
|
|
infrastructure = "default",
|
||
|
|
servers = [
|
||
|
|
{
|
||
|
|
hostname = "my-workspace-server-0",
|
||
|
|
provider = "local",
|
||
|
|
plan = "1xCPU-2 GB",
|
||
|
|
zone = "local",
|
||
|
|
storages = [{total = 25}],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Auto-Generated Guides
|
||
|
|
|
||
|
|
Every workspace includes 4 auto-generated guides in the `docs/` directory:
|
||
|
|
|
||
|
|
| Guide | Content |
|
||
|
|
|-------|---------|
|
||
|
|
| **README.md** | Workspace overview, quick start, and structure |
|
||
|
|
| **deployment-guide.md** | Step-by-step deployment for your infrastructure |
|
||
|
|
| **configuration-guide.md** | Configuration options specific to your setup |
|
||
|
|
| **troubleshooting.md** | Solutions for common issues |
|
||
|
|
|
||
|
|
These guides are customized for your workspace's:
|
||
|
|
- Configured providers
|
||
|
|
- Infrastructure definitions
|
||
|
|
- Server configurations
|
||
|
|
- Platform services
|
||
|
|
|
||
|
|
## Initialization Process (8 Steps)
|
||
|
|
|
||
|
|
```plaintext
|
||
|
|
STEP 1: Create directory structure
|
||
|
|
└─ workspace/, config/, infra/default/, etc.
|
||
|
|
|
||
|
|
STEP 2: Generate Nickel configuration
|
||
|
|
├─ config/config.ncl (master config)
|
||
|
|
└─ infra/default/*.ncl (infrastructure files)
|
||
|
|
|
||
|
|
STEP 3: Configure providers
|
||
|
|
└─ Setup local provider (default)
|
||
|
|
|
||
|
|
STEP 4: Initialize metadata
|
||
|
|
└─ .provisioning/metadata.yaml
|
||
|
|
|
||
|
|
STEP 5: Activate workspace (if requested)
|
||
|
|
└─ Set as default workspace
|
||
|
|
|
||
|
|
STEP 6: Create .gitignore
|
||
|
|
└─ Workspace-specific ignore rules
|
||
|
|
|
||
|
|
STEP 7: ✨ GENERATE DOCUMENTATION
|
||
|
|
├─ Extract workspace metadata
|
||
|
|
├─ Render 4 workspace guides
|
||
|
|
└─ Place in docs/ directory
|
||
|
|
|
||
|
|
STEP 8: Display summary
|
||
|
|
└─ Show workspace path and documentation location
|
||
|
|
```
|
||
|
|
|
||
|
|
## Common Commands
|
||
|
|
|
||
|
|
### Workspace Management
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Create interactive workspace
|
||
|
|
provisioning workspace init
|
||
|
|
|
||
|
|
# Create with explicit path and activate
|
||
|
|
provisioning workspace init my_workspace /path/to/workspace --activate
|
||
|
|
|
||
|
|
# List all workspaces
|
||
|
|
provisioning workspace list
|
||
|
|
|
||
|
|
# Activate workspace
|
||
|
|
provisioning workspace activate my_workspace
|
||
|
|
|
||
|
|
# Show active workspace
|
||
|
|
provisioning workspace active
|
||
|
|
```
|
||
|
|
|
||
|
|
### Configuration
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Validate Nickel configuration
|
||
|
|
nickel typecheck config/config.ncl
|
||
|
|
nickel typecheck infra/default/main.ncl
|
||
|
|
|
||
|
|
# Validate with provisioning system
|
||
|
|
provisioning validate config
|
||
|
|
```
|
||
|
|
|
||
|
|
### Deployment
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Dry-run (check mode)
|
||
|
|
provisioning -c server create
|
||
|
|
|
||
|
|
# Actual deployment
|
||
|
|
provisioning server create
|
||
|
|
|
||
|
|
# List servers
|
||
|
|
provisioning server list
|
||
|
|
```
|
||
|
|
|
||
|
|
## Workspace Directory Structure
|
||
|
|
|
||
|
|
### Auto-Generated Structure
|
||
|
|
|
||
|
|
```bash
|
||
|
|
my_workspace/
|
||
|
|
├── config/
|
||
|
|
│ ├── config.ncl # Master configuration
|
||
|
|
│ ├── providers/ # Provider configs
|
||
|
|
│ └── platform/ # Platform configs
|
||
|
|
│
|
||
|
|
├── infra/
|
||
|
|
│ └── default/
|
||
|
|
│ ├── main.ncl # Infrastructure definition
|
||
|
|
│ └── servers.ncl # Server definitions
|
||
|
|
│
|
||
|
|
├── docs/ # AUTO-GENERATED GUIDES
|
||
|
|
│ ├── README.md # Workspace overview
|
||
|
|
│ ├── 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
|
||
|
|
```
|
||
|
|
|
||
|
|
## Customization Guide
|
||
|
|
|
||
|
|
### Edit Configuration
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Master workspace configuration
|
||
|
|
vim config/config.ncl
|
||
|
|
|
||
|
|
# Infrastructure definition
|
||
|
|
vim infra/default/main.ncl
|
||
|
|
|
||
|
|
# Server definitions
|
||
|
|
vim infra/default/servers.ncl
|
||
|
|
```
|
||
|
|
|
||
|
|
### Add Multiple Infrastructures
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Create new infrastructure environment
|
||
|
|
mkdir -p infra/production infra/staging
|
||
|
|
|
||
|
|
# Copy template files
|
||
|
|
cp infra/default/main.ncl infra/production/main.ncl
|
||
|
|
cp infra/default/servers.ncl infra/production/servers.ncl
|
||
|
|
|
||
|
|
# Edit for your needs
|
||
|
|
vim infra/production/servers.ncl
|
||
|
|
```
|
||
|
|
|
||
|
|
### Configure Providers
|
||
|
|
|
||
|
|
Update `config/config.ncl` to enable cloud providers:
|
||
|
|
|
||
|
|
```nickel
|
||
|
|
providers = {
|
||
|
|
upcloud = {
|
||
|
|
name = "upcloud",
|
||
|
|
enabled = true, # Set to true
|
||
|
|
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,
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
1. **Read auto-generated guides** in `docs/`
|
||
|
|
2. **Customize configuration** in Nickel files
|
||
|
|
3. **Validate with**: `nickel typecheck config/config.ncl`
|
||
|
|
4. **Test deployment** with dry-run mode: `provisioning -c server create`
|
||
|
|
5. **Deploy infrastructure** when ready
|
||
|
|
|
||
|
|
## Documentation References
|
||
|
|
|
||
|
|
- **[Workspace Setup Guide](workspace-setup.md)** - Complete setup instructions
|
||
|
|
- **[Workspace Switching Guide](workspace-switching-guide.md)** - Managing multiple workspaces
|
||
|
|
- **[Infrastructure Guide](../infrastructure/infrastructure-management.md)** - Infrastructure details
|