Full Infrastructure Template\n\nThis is a comprehensive infrastructure template with multiple server types and advanced configuration examples.\n\n## What's Included\n\n- Web servers - 2 frontend web servers\n- Database server - Backend database with private networking\n- Kubernetes control plane - Control plane node\n- Kubernetes workers - 2 worker nodes\n- Advanced settings - SSH config, monitoring, backup options\n- Comprehensive examples - Multiple server roles and configurations\n\n## Server Inventory\n\n| Hostname | Role | Network | Purpose |\n| ---------- | ------ | --------- | --------- |\n| web-01, web-02 | Web | Public + Private | Frontend application servers |\n| db-01 | Database | Private only | Backend database |\n| k8s-control-01 | K8s Control | Public + Private | Kubernetes control plane |\n| k8s-worker-01, k8s-worker-02 | K8s Worker | Public + Private | Kubernetes compute nodes |\n\n## Quick Start\n\n### 1. Load Required Modules\n\n\ncd infra/<your-infra-name>\n\n# Load provider\nprovisioning mod load providers . upcloud\n\n# Load taskservs\nprovisioning mod load taskservs . kubernetes containerd cilium\n\n# Load cluster configurations (optional)\nprovisioning mod load clusters . buildkit\n\n\n### 2. Customize Configuration\n\nEdit servers.k:\n\nProvider-specific settings:\n\n\n# Uncomment and adjust for your provider\nplan = "2xCPU-4GB" # Server size\nstorage_size = 50 # Disk size in GB\n\n\nTask services:\n\n\n# Uncomment after loading modules\ntaskservs = [\n { name = "kubernetes", profile = "control-plane" }\n { name = "containerd", profile = "default" }\n { name = "cilium", profile = "default" }\n]\n\n\nSelect servers to deploy:\n\n\n# Choose which server groups to deploy\nall_servers = web_servers + db_servers # Web + DB only\n# OR\nall_servers = k8s_control + k8s_workers # Kubernetes cluster only\n# OR\nall_servers = web_servers + db_servers + k8s_control + k8s_workers # Everything\n\n\n### 3. Deploy\n\n\n# Test configuration\nkcl run servers.k\n\n# Dry-run deployment (recommended)\nprovisioning s create --infra <name> --check\n\n# Deploy selected servers\nprovisioning s create --infra <name>\n\n# Or deploy specific server groups\nprovisioning s create --infra <name> --select web\n\n\n## Architecture Examples\n\n### Web Application Stack\n\nDeploy web servers + database:\n\n\nall_servers = web_servers + db_servers\n\n\n### Kubernetes Cluster\n\nDeploy control plane + workers:\n\n\nall_servers = k8s_control + k8s_workers\n\n\n### Complete Infrastructure\n\nDeploy everything:\n\n\nall_servers = web_servers + db_servers + k8s_control + k8s_workers\n\n\n## Advanced Configuration\n\n### Network Segmentation\n\n- Public servers: web-01, web-02 (public + private networks)\n- Private servers: db-01 (private network only)\n- Hybrid: k8s nodes (public for API access, private for pod networking)\n\n### Monitoring\n\nMonitoring is pre-configured in settings:\n\n\nmonitoring = {\n enabled = True\n metrics_port = 9100\n log_aggregation = True\n}\n\n\n### SSH Configuration\n\nAdvanced SSH settings are included:\n\n\nssh_config = {\n connect_timeout = 30\n retry_attempts = 3\n compression = True\n}\n\n\n## Next Steps\n\n1. Customize server specs - Adjust CPU, memory, storage\n2. Configure networking - Set up firewall rules, load balancers\n3. Add taskservs - Uncomment and configure task services\n4. Set up clusters - Deploy Kubernetes or container clusters\n5. Configure monitoring - Set up metrics and logging\n6. Implement backup - Configure backup policies\n\n## Template Characteristics\n\n- Complexity: High\n- Servers: 6 examples (web, database, k8s)\n- Pre-configured modules: Examples for all major components\n- Best for: Production deployments, complex architectures, learning advanced patterns