634 lines
15 KiB
Markdown
634 lines
15 KiB
Markdown
|
|
---
|
||
|
|
theme: seriph
|
||
|
|
background: https://source.unsplash.com/1920x1080/?rust,technology
|
||
|
|
class: text-center
|
||
|
|
highlighter: prism
|
||
|
|
lineNumbers: true
|
||
|
|
info: |
|
||
|
|
## Cloud Native Provisioning
|
||
|
|
Nushell + KCL + Rust Ecosystem
|
||
|
|
|
||
|
|
Rust Meetup 2025
|
||
|
|
drawings:
|
||
|
|
enabled: true
|
||
|
|
persist: false
|
||
|
|
transition: slide-left
|
||
|
|
title: Cloud Native Provisioning - Rust Ecosystem
|
||
|
|
mdc: true
|
||
|
|
---
|
||
|
|
|
||
|
|
# Cloud Native Provisioning
|
||
|
|
|
||
|
|
## Nushell + KCL + Rust Ecosystem
|
||
|
|
|
||
|
|
Infrastructure as Code con tipos, AI, y herramientas Rust
|
||
|
|
|
||
|
|
<div class="pt-12">
|
||
|
|
<span @click="$slidev.nav.next" class="px-2 py-1 rounded cursor-pointer" hover="bg-white bg-opacity-10">
|
||
|
|
Press Space for next page <carbon:arrow-right class="inline"/>
|
||
|
|
</span>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="abs-br m-6 flex gap-2">
|
||
|
|
<button @click="$slidev.nav.openInEditor()" title="Open in Editor" class="text-xl slidev-icon-btn opacity-50 !border-none !hover:text-white">
|
||
|
|
<carbon:edit />
|
||
|
|
</button>
|
||
|
|
<a href="https://github.com/JesusPerezLorenzo/provisioning" target="_blank" alt="GitHub"
|
||
|
|
class="text-xl slidev-icon-btn opacity-50 !border-none !hover:text-white">
|
||
|
|
<carbon-logo-github />
|
||
|
|
</a>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
transition: fade-out
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# ¿Quién soy?
|
||
|
|
|
||
|
|
<div class="flex gap-8 items-center">
|
||
|
|
<div class="flex-1">
|
||
|
|
<h2>Jesús Pérez Lorenzo</h2>
|
||
|
|
<ul>
|
||
|
|
<li>🦀 Senior Rust Developer</li>
|
||
|
|
<li>☁️ Cloud Native Architect</li>
|
||
|
|
<li>🏗️ Infrastructure as Code enthusiast</li>
|
||
|
|
<li>🚀 Open Source contributor</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div class="flex-1">
|
||
|
|
<img src="/assets/profile.png" class="rounded-full w-48 h-48 mx-auto" alt="Profile"/>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# El Problema
|
||
|
|
|
||
|
|
<div class="grid grid-cols-2 gap-8">
|
||
|
|
<div>
|
||
|
|
<h2>🔧 Herramientas Actuales</h2>
|
||
|
|
<ul>
|
||
|
|
<li>❌ <strong>Terraform</strong>: HCL sin tipos fuertes</li>
|
||
|
|
<li>❌ <strong>Ansible</strong>: YAML frágil</li>
|
||
|
|
<li>❌ <strong>CloudFormation</strong>: JSON/YAML verboso</li>
|
||
|
|
<li>❌ <strong>Pulumi</strong>: Mejor, pero limitado</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h2>🚨 Problemas Reales</h2>
|
||
|
|
<ul>
|
||
|
|
<li>Errores en runtime, no en compile time</li>
|
||
|
|
<li>Debugging complejo</li>
|
||
|
|
<li>Reutilización limitada</li>
|
||
|
|
<li>Sin integración con AI</li>
|
||
|
|
<li>Configuración como texto plano</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="mt-8 p-4 bg-red-100 rounded-lg">
|
||
|
|
💡 <strong>Necesitamos aplicar principios de Rust a infraestructura</strong>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: quote
|
||
|
|
---
|
||
|
|
|
||
|
|
# "Si Rust nos enseñó algo, es que los tipos nos salvan de errores costosos"
|
||
|
|
|
||
|
|
Apliquemos esto a infraestructura
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Nuestra Filosofía
|
||
|
|
|
||
|
|
<div class="grid grid-cols-3 gap-6">
|
||
|
|
<div class="text-center">
|
||
|
|
<div class="text-6xl mb-4">🛡️</div>
|
||
|
|
<h3>Type Safety</h3>
|
||
|
|
<p>Errores capturados en compile time, no en production</p>
|
||
|
|
</div>
|
||
|
|
<div class="text-center">
|
||
|
|
<div class="text-6xl mb-4">🧩</div>
|
||
|
|
<h3>Composability</h3>
|
||
|
|
<p>Componentes reutilizables que se combinan naturalmente</p>
|
||
|
|
</div>
|
||
|
|
<div class="text-center">
|
||
|
|
<div class="text-6xl mb-4">🤖</div>
|
||
|
|
<h3>AI-First</h3>
|
||
|
|
<p>Lenguaje natural como interfaz principal</p>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<br>
|
||
|
|
|
||
|
|
<div class="text-center">
|
||
|
|
<h2>Infrastructure as Types</h2>
|
||
|
|
<p>No más YAML/JSON - Configuración con schemas y validación</p>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Stack Tecnológico
|
||
|
|
|
||
|
|
<div class="grid grid-cols-2 gap-8">
|
||
|
|
<div>
|
||
|
|
<h2>🐚 Nushell</h2>
|
||
|
|
<ul>
|
||
|
|
<li>Shell estructurado con tipos</li>
|
||
|
|
<li>Pipelines de datos, no texto</li>
|
||
|
|
<li>JSON/YAML nativo</li>
|
||
|
|
<li>Better error handling</li>
|
||
|
|
</ul>
|
||
|
|
|
||
|
|
<h2 class="mt-6">⚙️ KCL</h2>
|
||
|
|
<ul>
|
||
|
|
<li>Configuration Language con schemas</li>
|
||
|
|
<li>Validación en compile time</li>
|
||
|
|
<li>Composición y herencia</li>
|
||
|
|
<li>IDE support completo</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h2>🦀 Herramientas Rust</h2>
|
||
|
|
<ul>
|
||
|
|
<li><strong>youki</strong>: Container runtime OCI</li>
|
||
|
|
<li><strong>Cosmian KMS</strong>: Key management</li>
|
||
|
|
<li><strong>Polkadot/Substrate</strong>: Blockchain infra</li>
|
||
|
|
</ul>
|
||
|
|
|
||
|
|
<h2 class="mt-6">🤖 MCP Integration</h2>
|
||
|
|
<ul>
|
||
|
|
<li>Model Context Protocol</li>
|
||
|
|
<li>Claude Desktop integration</li>
|
||
|
|
<li>Natural language operations</li>
|
||
|
|
<li>AI-assisted troubleshooting</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Arquitectura del Sistema
|
||
|
|
|
||
|
|
```rust
|
||
|
|
mermaid {theme: 'dark', scale: 0.8}
|
||
|
|
graph TB
|
||
|
|
User[👤 Usuario] --> AI[🤖 MCP Server]
|
||
|
|
User --> CLI[💻 Nushell CLI]
|
||
|
|
|
||
|
|
AI --> Core[🧠 Core System]
|
||
|
|
CLI --> Core
|
||
|
|
|
||
|
|
Core --> KCL[📋 KCL Schemas]
|
||
|
|
Core --> Providers[☁️ Providers]
|
||
|
|
|
||
|
|
Providers --> AWS[🌐 AWS]
|
||
|
|
Providers --> UpCloud[☁️ UpCloud]
|
||
|
|
Providers --> Local[🏠 Local]
|
||
|
|
|
||
|
|
Core --> TaskServs[⚙️ Task Services]
|
||
|
|
TaskServs --> K8s[🚢 Kubernetes]
|
||
|
|
TaskServs --> Youki[🦀 youki]
|
||
|
|
TaskServs --> KMS[🔐 Cosmian KMS]
|
||
|
|
|
||
|
|
Core --> Secrets[🔑 SOPS/Age]
|
||
|
|
|
||
|
|
style Core fill:#ff6b6b
|
||
|
|
style AI fill:#4ecdc4
|
||
|
|
style KCL fill:#45b7d1
|
||
|
|
style Youki fill:#f39c12
|
||
|
|
style KMS fill:#9b59b6
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: center
|
||
|
|
class: text-center
|
||
|
|
---
|
||
|
|
|
||
|
|
# 🎬 Demo Time
|
||
|
|
|
||
|
|
Vamos a ver esto en acción
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Demo 1: Provisioning Básico
|
||
|
|
|
||
|
|
```rust
|
||
|
|
nu {1|2-3|4-5|6-7}
|
||
|
|
# Crear nueva infraestructura
|
||
|
|
provisioning generate infra --new rust-meetup-demo
|
||
|
|
|
||
|
|
# Ver la configuración generada
|
||
|
|
provisioning show settings --infra rust-meetup-demo --out json
|
||
|
|
|
||
|
|
# Crear servidores (modo check primero)
|
||
|
|
provisioning server create --infra rust-meetup-demo --check
|
||
|
|
|
||
|
|
# Crear servidores reales
|
||
|
|
provisioning server create --infra rust-meetup-demo
|
||
|
|
```
|
||
|
|
|
||
|
|
<div class="mt-6 p-4 bg-blue-100 rounded-lg">
|
||
|
|
✨ <strong>Ventaja</strong>: Tipos estructurados, mejor debugging, composición natural
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Demo 2: MCP + AI Integration
|
||
|
|
|
||
|
|
<div class="grid grid-cols-2 gap-8">
|
||
|
|
<div>
|
||
|
|
<h3>Claude Desktop</h3>
|
||
|
|
<div class="bg-gray-100 p-4 rounded-lg text-sm">
|
||
|
|
<p><strong>Usuario:</strong> "Crea 3 servidores AWS con 4 CPU cada uno para un cluster Kubernetes de desarrollo"</p>
|
||
|
|
<br>
|
||
|
|
<p><strong>Claude:</strong> "Voy a crear esa infraestructura para ti..."</p>
|
||
|
|
<br>
|
||
|
|
<p class="text-green-600">✅ Servidores creados: k8s-master-01, k8s-worker-01, k8s-worker-02</p>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>Comando ejecutado</h3>
|
||
|
|
|
||
|
|
```rust
|
||
|
|
nu
|
||
|
|
# Generado automáticamente por MCP
|
||
|
|
provisioning generate server \
|
||
|
|
--template aws-k8s-cluster \
|
||
|
|
--nodes 3 \
|
||
|
|
--cpu 4 \
|
||
|
|
--purpose development
|
||
|
|
|
||
|
|
provisioning server create \
|
||
|
|
--infra rust-meetup-demo \
|
||
|
|
--wait
|
||
|
|
```
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="mt-4 p-4 bg-green-100 rounded-lg">
|
||
|
|
🎯 <strong>Game Changer</strong>: Infraestructura desde lenguaje natural
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Demo 3: Cosmian KMS vs SOPS
|
||
|
|
|
||
|
|
<div class="grid grid-cols-2 gap-6">
|
||
|
|
<div>
|
||
|
|
<h3>🔒 SOPS/Age (Traditional)</h3>
|
||
|
|
|
||
|
|
```rust
|
||
|
|
bash
|
||
|
|
# Setup manual
|
||
|
|
age-keygen -o key.txt
|
||
|
|
export SOPS_AGE_KEY_FILE=key.txt
|
||
|
|
|
||
|
|
# Encriptar archivo
|
||
|
|
sops -e -i secrets.yaml
|
||
|
|
|
||
|
|
# Editar (complejo)
|
||
|
|
sops secrets.yaml
|
||
|
|
```
|
||
|
|
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>🦀 Cosmian KMS (Rust-powered)</h3>
|
||
|
|
|
||
|
|
```rust
|
||
|
|
nu
|
||
|
|
# Configuración en KCL
|
||
|
|
secret_provider = {
|
||
|
|
provider = "kms"
|
||
|
|
kms_config = {
|
||
|
|
server_url = "https://kms.local"
|
||
|
|
auth_method = "certificate"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Uso natural
|
||
|
|
provisioning sops config.yaml
|
||
|
|
provisioning taskserv update secrets --rotate
|
||
|
|
```
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
**Ventajas Cosmian KMS:**
|
||
|
|
|
||
|
|
- 🏢 Enterprise-ready con audit logs
|
||
|
|
- 🔄 Rotación automática de claves
|
||
|
|
- 🛡️ Zero-knowledge encryption
|
||
|
|
- ⚡ Performance nativa Rust
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Demo 4: Cross-Compilation
|
||
|
|
|
||
|
|
```rust
|
||
|
|
bash {1|3-9|11-16|18-20}
|
||
|
|
#!/bin/bash
|
||
|
|
# Auto-detección de arquitectura
|
||
|
|
detect_arch() {
|
||
|
|
case $(uname -m) in
|
||
|
|
x86_64) echo "x86_64-unknown-linux-gnu" ;;
|
||
|
|
aarch64|arm64) echo "aarch64-unknown-linux-gnu" ;;
|
||
|
|
*) echo "unsupported" ;;
|
||
|
|
esac
|
||
|
|
}
|
||
|
|
|
||
|
|
# Build para múltiples targets
|
||
|
|
cross build --release --target x86_64-unknown-linux-gnu
|
||
|
|
cross build --release --target aarch64-unknown-linux-gnu
|
||
|
|
|
||
|
|
# Packaging inteligente
|
||
|
|
tar czf provisioning-x86_64.tar.gz target/x86_64-unknown-linux-gnu/release/
|
||
|
|
tar czf provisioning-aarch64.tar.gz target/aarch64-unknown-linux-gnu/release/
|
||
|
|
|
||
|
|
# Deploy automático según arquitectura del servidor
|
||
|
|
provisioning server deploy --auto-arch
|
||
|
|
```
|
||
|
|
|
||
|
|
**¿Por qué Cross-Compilation?**
|
||
|
|
|
||
|
|
- 💰 ARM instances 20% más baratas
|
||
|
|
- 🔌 Edge computing y IoT
|
||
|
|
- ⚡ Performance nativa vs containers
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Comparativa Real
|
||
|
|
|
||
|
|
<div class="grid grid-cols-4 gap-4 text-sm">
|
||
|
|
<div class="font-bold">Característica</div>
|
||
|
|
<div class="font-bold">Nuestro Sistema</div>
|
||
|
|
<div class="font-bold">Terraform</div>
|
||
|
|
<div class="font-bold">Ansible</div>
|
||
|
|
|
||
|
|
<div>Type Safety</div>
|
||
|
|
<div class="text-green-600">✅ Full</div>
|
||
|
|
<div class="text-yellow-600">⚠️ Partial</div>
|
||
|
|
<div class="text-red-600">❌ No</div>
|
||
|
|
|
||
|
|
<div>AI Integration</div>
|
||
|
|
<div class="text-green-600">✅ Native MCP</div>
|
||
|
|
<div class="text-red-600">❌ No</div>
|
||
|
|
<div class="text-red-600">❌ No</div>
|
||
|
|
|
||
|
|
<div>Multi-arch</div>
|
||
|
|
<div class="text-green-600">✅ Built-in</div>
|
||
|
|
<div class="text-yellow-600">⚠️ Manual</div>
|
||
|
|
<div class="text-yellow-600">⚠️ Manual</div>
|
||
|
|
|
||
|
|
<div>Performance</div>
|
||
|
|
<div class="text-green-600">✅ Rust-optimized</div>
|
||
|
|
<div class="text-yellow-600">⚠️ Good</div>
|
||
|
|
<div class="text-yellow-600">⚠️ Python</div>
|
||
|
|
|
||
|
|
<div>Debug Experience</div>
|
||
|
|
<div class="text-green-600">✅ Excellent</div>
|
||
|
|
<div class="text-yellow-600">⚠️ OK</div>
|
||
|
|
<div class="text-red-600">❌ Poor</div>
|
||
|
|
|
||
|
|
<div>Learning Curve</div>
|
||
|
|
<div class="text-yellow-600">⚠️ Steep</div>
|
||
|
|
<div class="text-yellow-600">⚠️ Moderate</div>
|
||
|
|
<div class="text-green-600">✅ Easy</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="mt-6 p-4 bg-blue-100 rounded-lg">
|
||
|
|
💡 <strong>Trade-off</strong>: Curva de aprendizaje más alta, pero mejor mantainability a largo plazo
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Casos de Uso Reales
|
||
|
|
|
||
|
|
<div class="grid grid-cols-2 gap-8">
|
||
|
|
<div>
|
||
|
|
<h3>✅ Ideal Para:</h3>
|
||
|
|
<ul>
|
||
|
|
<li>🚀 <strong>Startups tech-forward</strong><br>Equipos que valoran innovación</li>
|
||
|
|
<li>🔬 <strong>Proyectos greenfield</strong><br>Sin legacy infrastructure</li>
|
||
|
|
<li>🌐 <strong>Multi-cloud desde día 1</strong><br>Evitar vendor lock-in</li>
|
||
|
|
<li>🤖 <strong>DevOps automatizado</strong><br>AI-assisted operations</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>⚠️ Considerar Antes:</h3>
|
||
|
|
<ul>
|
||
|
|
<li>🏢 <strong>Empresas tradicionales</strong><br>Resistencia al cambio</li>
|
||
|
|
<li>🔧 <strong>Legacy systems</strong><br>Migración compleja</li>
|
||
|
|
<li>👥 <strong>Equipos grandes</strong><br>Training overhead</li>
|
||
|
|
<li>📅 <strong>Deadlines ajustados</strong><br>Tiempo de adopción</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Roadmap y Futuro
|
||
|
|
|
||
|
|
<div class="grid grid-cols-3 gap-6">
|
||
|
|
<div>
|
||
|
|
<h3>🎯 Corto Plazo (3-6 meses)</h3>
|
||
|
|
<ul>
|
||
|
|
<li>Más providers (GCP, Azure)</li>
|
||
|
|
<li>Task services adicionales</li>
|
||
|
|
<li>Improved MCP tools</li>
|
||
|
|
<li>Documentation & tutorials</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>🚀 Medio Plazo (6-12 meses)</h3>
|
||
|
|
<ul>
|
||
|
|
<li>Web UI para gestión</li>
|
||
|
|
<li>Terraform import/export</li>
|
||
|
|
<li>Enterprise features</li>
|
||
|
|
<li>CI/CD integrations</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>🌟 Largo Plazo (1+ años)</h3>
|
||
|
|
<ul>
|
||
|
|
<li>SaaS offering</li>
|
||
|
|
<li>Marketplace de components</li>
|
||
|
|
<li>Advanced AI features</li>
|
||
|
|
<li>Industry partnerships</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# ¿Tiene Sentido Este Enfoque?
|
||
|
|
|
||
|
|
<div class="grid grid-cols-2 gap-8">
|
||
|
|
<div class="bg-green-100 p-6 rounded-lg">
|
||
|
|
<h3 class="text-green-800">✅ Pros</h3>
|
||
|
|
<ul class="text-green-700">
|
||
|
|
<li><strong>Type Safety</strong>: Errores capturados temprano</li>
|
||
|
|
<li><strong>Better DX</strong>: Mejor debugging y IDE support</li>
|
||
|
|
<li><strong>AI Integration</strong>: Natural language ops</li>
|
||
|
|
<li><strong>Performance</strong>: Rust-optimized tools</li>
|
||
|
|
<li><strong>Composability</strong>: Reutilización real</li>
|
||
|
|
<li><strong>Future-proof</strong>: Multi-arch, cloud-agnostic</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div class="bg-red-100 p-6 rounded-lg">
|
||
|
|
<h3 class="text-red-800">⚠️ Contras</h3>
|
||
|
|
<ul class="text-red-700">
|
||
|
|
<li><strong>Learning Curve</strong>: Nushell + KCL nuevos</li>
|
||
|
|
<li><strong>Ecosystem</strong>: Más pequeño que Terraform</li>
|
||
|
|
<li><strong>Enterprise Adoption</strong>: Tiempo para madurar</li>
|
||
|
|
<li><strong>Team Training</strong>: Inversión inicial</li>
|
||
|
|
<li><strong>Breaking Changes</strong>: Pre-v1.0 instability</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="mt-6 text-center">
|
||
|
|
<h3>🎯 Respuesta: Depende de tu contexto</h3>
|
||
|
|
<p>Para equipos innovadores con tiempo para invertir: <strong>Absolutamente sí</strong></p>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: default
|
||
|
|
---
|
||
|
|
|
||
|
|
# Contribuir al Proyecto
|
||
|
|
|
||
|
|
<div class="grid grid-cols-2 gap-8">
|
||
|
|
<div>
|
||
|
|
<h3>🛠️ Áreas de Contribución</h3>
|
||
|
|
<ul>
|
||
|
|
<li><strong>Providers</strong>: GCP, Azure, más clouds</li>
|
||
|
|
<li><strong>Task Services</strong>: Databases, monitoring</li>
|
||
|
|
<li><strong>MCP Tools</strong>: Más AI capabilities</li>
|
||
|
|
<li><strong>Documentation</strong>: Tutorials, examples</li>
|
||
|
|
<li><strong>Testing</strong>: Multi-arch, edge cases</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>🏁 Getting Started</h3>
|
||
|
|
|
||
|
|
```rust
|
||
|
|
bash
|
||
|
|
# Clonar repo
|
||
|
|
git clone <repository-url>
|
||
|
|
cd provisioning
|
||
|
|
|
||
|
|
# Setup dev environment
|
||
|
|
./setup/dev-install.sh
|
||
|
|
|
||
|
|
# Ejecutar tests
|
||
|
|
nu test_config.nu
|
||
|
|
|
||
|
|
# Contribuir
|
||
|
|
# 1. Fork & branch
|
||
|
|
# 2. Implement & test
|
||
|
|
# 3. PR with good description
|
||
|
|
```
|
||
|
|
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="mt-6 text-center">
|
||
|
|
<p><strong>¡La comunidad Rust es perfecta para este tipo de herramientas!</strong></p>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: center
|
||
|
|
class: text-center
|
||
|
|
---
|
||
|
|
|
||
|
|
# 🙏 Gracias
|
||
|
|
|
||
|
|
## ¿Preguntas?
|
||
|
|
|
||
|
|
<div class="grid grid-cols-3 gap-8 mt-12">
|
||
|
|
<div>
|
||
|
|
<h3>🔗 Links</h3>
|
||
|
|
<ul class="text-sm">
|
||
|
|
<li>GitHub: <a href="#">/provisioning</a></li>
|
||
|
|
<li>Docs: <a href="#">/docs</a></li>
|
||
|
|
<li>Demo: <a href="#">/talks</a></li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>📧 Contacto</h3>
|
||
|
|
<ul class="text-sm">
|
||
|
|
<li>Email: jesus@example.com</li>
|
||
|
|
<li>Twitter: @jesusperez</li>
|
||
|
|
<li>LinkedIn: /in/jesusperez</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
<div>
|
||
|
|
<h3>🤝 Comunidad</h3>
|
||
|
|
<ul class="text-sm">
|
||
|
|
<li>Discord: #provisioning</li>
|
||
|
|
<li>Issues: GitHub Issues</li>
|
||
|
|
<li>Discussions: GitHub Discussions</li>
|
||
|
|
</ul>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
layout: end
|
||
|
|
---
|
||
|
|
|
||
|
|
# Bonus: Live Q&A
|
||
|
|
|
||
|
|
¿Qué te gustaría ver en el proyecto?
|
||
|
|
¿Algún caso de uso específico?
|
||
|
|
¿Dudas sobre implementación?
|
||
|
|
|
||
|
|
<div class="text-center mt-12">
|
||
|
|
<p class="text-2xl">🦀 ❤️ ☁️</p>
|
||
|
|
<p>Rust + Cloud = Mejor DevOps</p>
|
||
|
|
</div>
|