437 lines
9.7 KiB
Markdown
437 lines
9.7 KiB
Markdown
|
|
# Natural Language Infrastructure
|
||
|
|
|
||
|
|
Use natural language to describe infrastructure requirements and get automatically generated Nickel configurations and deployment plans.
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
Natural Language Infrastructure (NLI) allows requesting infrastructure changes in plain English:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Instead of writing complex Nickel...
|
||
|
|
provisioning ai "Deploy a 3-node HA PostgreSQL cluster with automatic backups in AWS"
|
||
|
|
|
||
|
|
# Or interactively...
|
||
|
|
provisioning ai interactive
|
||
|
|
|
||
|
|
# Interactive mode guides you through requirements
|
||
|
|
```
|
||
|
|
|
||
|
|
## How It Works
|
||
|
|
|
||
|
|
### Request Processing Pipeline
|
||
|
|
|
||
|
|
```text
|
||
|
|
User Natural Language Input
|
||
|
|
↓
|
||
|
|
Intent Recognition
|
||
|
|
├─ Extract resource type (server, database, cluster)
|
||
|
|
├─ Identify constraints (HA, region, size)
|
||
|
|
└─ Detect options (monitoring, backup, encryption)
|
||
|
|
↓
|
||
|
|
RAG Knowledge Retrieval
|
||
|
|
├─ Find similar deployments
|
||
|
|
├─ Retrieve best practices
|
||
|
|
└─ Get provider-specific guidance
|
||
|
|
↓
|
||
|
|
LLM Inference (GPT-4, Claude 3)
|
||
|
|
├─ Generate Nickel schema
|
||
|
|
├─ Calculate resource requirements
|
||
|
|
└─ Create deployment plan
|
||
|
|
↓
|
||
|
|
Configuration Validation
|
||
|
|
├─ Type checking via Nickel compiler
|
||
|
|
├─ Schema validation
|
||
|
|
└─ Constraint verification
|
||
|
|
↓
|
||
|
|
Infrastructure Deployment
|
||
|
|
├─ Dry-run simulation
|
||
|
|
├─ Cost estimation
|
||
|
|
└─ User confirmation
|
||
|
|
↓
|
||
|
|
Execution & Monitoring
|
||
|
|
```
|
||
|
|
|
||
|
|
## Command Usage
|
||
|
|
|
||
|
|
### Simple Requests
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Web servers with load balancing
|
||
|
|
provisioning ai "Create 3 web servers with load balancer"
|
||
|
|
|
||
|
|
# Database setup
|
||
|
|
provisioning ai "Deploy PostgreSQL with 2 replicas and daily backups"
|
||
|
|
|
||
|
|
# Kubernetes cluster
|
||
|
|
provisioning ai "Create production Kubernetes cluster with Prometheus monitoring"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Complex Requests
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Multi-cloud deployment
|
||
|
|
provisioning ai "
|
||
|
|
Deploy:
|
||
|
|
- 3 HA Kubernetes clusters (AWS, UpCloud, Hetzner)
|
||
|
|
- PostgreSQL 15 with synchronous replication
|
||
|
|
- Redis cluster for caching
|
||
|
|
- ELK stack for logging
|
||
|
|
- Prometheus for monitoring
|
||
|
|
Constraints:
|
||
|
|
- Cross-region high availability
|
||
|
|
- Encrypted inter-region communication
|
||
|
|
- Auto-scaling based on CPU (70%)
|
||
|
|
"
|
||
|
|
|
||
|
|
# Disaster recovery setup
|
||
|
|
provisioning ai "
|
||
|
|
Set up disaster recovery for production environment:
|
||
|
|
- Active-passive failover to secondary region
|
||
|
|
- Daily automated backups (30-day retention)
|
||
|
|
- Monthly DR tests with automated reports
|
||
|
|
- RTO: 4 hours, RPO: 1 hour
|
||
|
|
- Test failover every week
|
||
|
|
"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Interactive Mode
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Start interactive mode
|
||
|
|
provisioning ai interactive
|
||
|
|
|
||
|
|
# System asks clarifying questions:
|
||
|
|
# Q: What type of infrastructure? (server, database, cluster, other)
|
||
|
|
# Q: Which cloud provider? (aws, upcloud, hetzner, local)
|
||
|
|
# Q: Production or development?
|
||
|
|
# Q: High availability required?
|
||
|
|
# Q: Expected load? (small, medium, large, enterprise)
|
||
|
|
# Q: Monitoring and logging?
|
||
|
|
# Q: Backup strategy?
|
||
|
|
|
||
|
|
# Shows generated configuration for approval
|
||
|
|
```
|
||
|
|
|
||
|
|
## Example: Web Application Deployment
|
||
|
|
|
||
|
|
### Request
|
||
|
|
|
||
|
|
```bash
|
||
|
|
provisioning ai "
|
||
|
|
Deploy a production web application:
|
||
|
|
- Frontend: 3 nginx servers with auto-scaling
|
||
|
|
- API: 5 FastAPI instances behind load balancer
|
||
|
|
- Database: HA PostgreSQL with read replicas
|
||
|
|
- Cache: Redis cluster
|
||
|
|
- Monitoring: Prometheus and Grafana
|
||
|
|
- Logs: Elasticsearch + Kibana
|
||
|
|
Environment: AWS
|
||
|
|
Region: us-east-1 (primary), eu-west-1 (DR)
|
||
|
|
Budget: $5000/month max
|
||
|
|
"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Generated Configuration
|
||
|
|
|
||
|
|
The system generates:
|
||
|
|
|
||
|
|
**1. Nickel Infrastructure Definition**:
|
||
|
|
|
||
|
|
```nickel
|
||
|
|
{
|
||
|
|
metadata = {
|
||
|
|
generated_by = "provisioning-ai"
|
||
|
|
timestamp = "2026-01-16T01:47:00Z"
|
||
|
|
confidence = 0.94
|
||
|
|
}
|
||
|
|
|
||
|
|
infrastructure = {
|
||
|
|
frontend = {
|
||
|
|
servers = 3
|
||
|
|
cpu = 4
|
||
|
|
memory = 8
|
||
|
|
type = "t3.large"
|
||
|
|
auto_scaling = {
|
||
|
|
min = 3
|
||
|
|
max = 10
|
||
|
|
target_cpu = 70
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
api = {
|
||
|
|
servers = 5
|
||
|
|
cpu = 8
|
||
|
|
memory = 16
|
||
|
|
type = "t3.xlarge"
|
||
|
|
load_balancer = {
|
||
|
|
type = "application"
|
||
|
|
health_check = "/health"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
database = {
|
||
|
|
type = "postgresql"
|
||
|
|
version = "15"
|
||
|
|
replicas = 2
|
||
|
|
backup = {
|
||
|
|
enabled = true
|
||
|
|
frequency = "daily"
|
||
|
|
retention_days = 30
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
cache = {
|
||
|
|
type = "redis"
|
||
|
|
nodes = 3
|
||
|
|
cluster_mode = true
|
||
|
|
replication = true
|
||
|
|
}
|
||
|
|
|
||
|
|
monitoring = {
|
||
|
|
prometheus = true
|
||
|
|
grafana = true
|
||
|
|
retention_days = 30
|
||
|
|
}
|
||
|
|
|
||
|
|
logging = {
|
||
|
|
elasticsearch = true
|
||
|
|
kibana = true
|
||
|
|
retention_days = 30
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
provider = "aws"
|
||
|
|
region_primary = "us-east-1"
|
||
|
|
region_dr = "eu-west-1"
|
||
|
|
|
||
|
|
cost_estimate = {
|
||
|
|
monthly = "$4850"
|
||
|
|
breakdown = {
|
||
|
|
compute = "$2500"
|
||
|
|
database = "$1200"
|
||
|
|
cache = "$600"
|
||
|
|
monitoring = "$400"
|
||
|
|
networking = "$150"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**2. Deployment Plan**:
|
||
|
|
|
||
|
|
```text
|
||
|
|
Deployment Plan: Web Application (Production)
|
||
|
|
|
||
|
|
Phase 1: Network & Storage (2-3 hours)
|
||
|
|
- Create VPCs in us-east-1 and eu-west-1
|
||
|
|
- Set up inter-region VPN
|
||
|
|
- Create EBS volumes for database
|
||
|
|
- Create EFS for shared storage
|
||
|
|
|
||
|
|
Phase 2: Compute Instances (4-5 hours)
|
||
|
|
- Launch 3 frontend servers
|
||
|
|
- Launch 5 API servers
|
||
|
|
- Create load balancers
|
||
|
|
- Set up auto-scaling groups
|
||
|
|
|
||
|
|
Phase 3: Databases (3-4 hours)
|
||
|
|
- Create PostgreSQL primary
|
||
|
|
- Create read replicas
|
||
|
|
- Configure replication
|
||
|
|
- Run initial backup
|
||
|
|
|
||
|
|
Phase 4: Cache & Services (2-3 hours)
|
||
|
|
- Create Redis cluster
|
||
|
|
- Deploy Prometheus
|
||
|
|
- Deploy Grafana
|
||
|
|
- Deploy Elasticsearch/Kibana
|
||
|
|
|
||
|
|
Phase 5: Configuration (2-3 hours)
|
||
|
|
- Configure health checks
|
||
|
|
- Set up monitoring alerts
|
||
|
|
- Configure log shipping
|
||
|
|
- Deploy TLS certificates
|
||
|
|
|
||
|
|
Total Estimated Time: 13-18 hours
|
||
|
|
```
|
||
|
|
|
||
|
|
**3. Cost Breakdown**:
|
||
|
|
|
||
|
|
```text
|
||
|
|
Monthly Cost Estimate: $4,850
|
||
|
|
|
||
|
|
Compute $2,500 (EC2 instances)
|
||
|
|
Database $1,200 (RDS PostgreSQL)
|
||
|
|
Cache $600 (ElastiCache Redis)
|
||
|
|
Monitoring $400 (CloudWatch + Grafana)
|
||
|
|
Networking $150 (NAT Gateway, VPN)
|
||
|
|
```
|
||
|
|
|
||
|
|
**4. Risk Assessment**:
|
||
|
|
|
||
|
|
```text
|
||
|
|
Warnings:
|
||
|
|
- Budget limit reached at $4,850 (max: $5,000)
|
||
|
|
- Cross-region networking latency: 80-100ms
|
||
|
|
- Database failover time: 1-2 minutes
|
||
|
|
|
||
|
|
Recommendations:
|
||
|
|
- Implement connection pooling in API
|
||
|
|
- Use read replicas for analytics queries
|
||
|
|
- Consider spot instances for non-critical services (30% cost savings)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Output Formats
|
||
|
|
|
||
|
|
### Get Deployment Script
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Get Bash deployment script
|
||
|
|
provisioning ai "..." --output bash > deploy.sh
|
||
|
|
|
||
|
|
# Get Nushell script
|
||
|
|
provisioning ai "..." --output nushell > deploy.nu
|
||
|
|
|
||
|
|
# Get Terraform
|
||
|
|
provisioning ai "..." --output terraform > main.tf
|
||
|
|
|
||
|
|
# Get Nickel (default)
|
||
|
|
provisioning ai "..." --output nickel > infrastructure.ncl
|
||
|
|
```
|
||
|
|
|
||
|
|
### Save for Later
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Save configuration for review
|
||
|
|
provisioning ai "..." --save deployment-plan --review
|
||
|
|
|
||
|
|
# Deploy from saved plan
|
||
|
|
provisioning apply deployment-plan
|
||
|
|
|
||
|
|
# Compare with current state
|
||
|
|
provisioning diff deployment-plan
|
||
|
|
```
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
### LLM Provider Selection
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Use OpenAI (default)
|
||
|
|
export PROVISIONING_AI_PROVIDER=openai
|
||
|
|
export PROVISIONING_AI_MODEL=gpt-4
|
||
|
|
|
||
|
|
# Use Anthropic
|
||
|
|
export PROVISIONING_AI_PROVIDER=anthropic
|
||
|
|
export PROVISIONING_AI_MODEL=claude-3-opus
|
||
|
|
|
||
|
|
# Use local model
|
||
|
|
export PROVISIONING_AI_PROVIDER=local
|
||
|
|
export PROVISIONING_AI_MODEL=llama2:70b
|
||
|
|
```
|
||
|
|
|
||
|
|
### Response Options
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# ~/.config/provisioning/ai.yaml
|
||
|
|
natural_language:
|
||
|
|
output_format: nickel # nickel, terraform, bash, nushell
|
||
|
|
include_cost_estimate: true
|
||
|
|
include_risk_assessment: true
|
||
|
|
include_deployment_plan: true
|
||
|
|
auto_review: false # Require approval before deploy
|
||
|
|
dry_run: true # Simulate before execution
|
||
|
|
confidence_threshold: 0.85 # Reject low-confidence results
|
||
|
|
|
||
|
|
style:
|
||
|
|
verbosity: detailed
|
||
|
|
include_alternatives: true
|
||
|
|
explain_reasoning: true
|
||
|
|
```
|
||
|
|
|
||
|
|
## Advanced Features
|
||
|
|
|
||
|
|
### Conditional Infrastructure
|
||
|
|
|
||
|
|
```bash
|
||
|
|
provisioning ai "
|
||
|
|
Deploy web cluster:
|
||
|
|
- If environment is production: HA setup with 5 nodes
|
||
|
|
- If environment is staging: Standard setup with 2 nodes
|
||
|
|
- If environment is dev: Single node with development tools
|
||
|
|
"
|
||
|
|
```
|
||
|
|
|
||
|
|
### Cost-Optimized Variants
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Generate cost-optimized alternative
|
||
|
|
provisioning ai "..." --optimize-for cost
|
||
|
|
|
||
|
|
# Generate performance-optimized alternative
|
||
|
|
provisioning ai "..." --optimize-for performance
|
||
|
|
|
||
|
|
# Generate high-availability alternative
|
||
|
|
provisioning ai "..." --optimize-for availability
|
||
|
|
```
|
||
|
|
|
||
|
|
### Template-Based Generation
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Use existing templates as base
|
||
|
|
provisioning ai "..." --template kubernetes-ha
|
||
|
|
|
||
|
|
# List available templates
|
||
|
|
provisioning ai templates list
|
||
|
|
```
|
||
|
|
|
||
|
|
## Safety & Validation
|
||
|
|
|
||
|
|
### Review Before Deploy
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Generate and review (no auto-execute)
|
||
|
|
provisioning ai "..." --review
|
||
|
|
|
||
|
|
# Review generated Nickel
|
||
|
|
cat deployment-plan.ncl
|
||
|
|
|
||
|
|
# Validate configuration
|
||
|
|
provisioning validate deployment-plan.ncl
|
||
|
|
|
||
|
|
# Dry-run to see what changes
|
||
|
|
provisioning apply --dry-run deployment-plan.ncl
|
||
|
|
|
||
|
|
# Apply after approval
|
||
|
|
provisioning apply deployment-plan.ncl
|
||
|
|
```
|
||
|
|
|
||
|
|
### Rollback Support
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Create deployment with automatic rollback
|
||
|
|
provisioning ai "..." --with-rollback
|
||
|
|
|
||
|
|
# Manual rollback if issues
|
||
|
|
provisioning workflow rollback --to-checkpoint
|
||
|
|
|
||
|
|
# View deployment history
|
||
|
|
provisioning history list --type infrastructure
|
||
|
|
```
|
||
|
|
|
||
|
|
## Limitations
|
||
|
|
|
||
|
|
- **Context Window**: Very large infrastructure descriptions may exceed LLM limits
|
||
|
|
- **Ambiguity**: Unclear requirements may produce suboptimal configurations
|
||
|
|
- **Provider Specifics**: Some provider-specific features may require manual adjustment
|
||
|
|
- **Cost**: API calls incur per-token charges
|
||
|
|
- **Latency**: Processing takes 2-10 seconds depending on complexity
|
||
|
|
|
||
|
|
## Related Documentation
|
||
|
|
|
||
|
|
- [AI Architecture](./ai-architecture.md) - System design
|
||
|
|
- [AI Service Crate](./ai-service-crate.md) - Core microservice
|
||
|
|
- [RAG & Knowledge](./rag-and-knowledge.md) - Knowledge retrieval
|
||
|
|
- [TypeDialog Integration](./typedialog-integration.md) - Form AI
|
||
|
|
- [Nickel Guide](../infrastructure/nickel-guide.md) - Configuration syntax
|