9.7 KiB
9.7 KiB
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:
# 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
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
# 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
# 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
# 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
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:
{
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:
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:
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:
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
# 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
# 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
# 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
# ~/.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
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
# 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
# Use existing templates as base
provisioning ai "..." --template kubernetes-ha
# List available templates
provisioning ai templates list
Safety & Validation
Review Before Deploy
# 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
# 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 - System design
- AI Service Crate - Core microservice
- RAG & Knowledge - Knowledge retrieval
- TypeDialog Integration - Form AI
- Nickel Guide - Configuration syntax