provisioning/docs/src/ai/natural-language-infrastructure.md
2026-01-17 03:58:28 +00:00

436 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