Infraestructura como código con Terraform
Clase 4 de 21 • Curso Profesional de DevOps
Contenido del curso
Containers y ambientes de desarrollo
Pruebas
Integración Continua
Despliegue Continuo
Reliability
Cierre del curso
Definir infraestructura como código te da control, trazabilidad y velocidad desde el primer día. Con Terraform, módulos y parámetros, eliminas el “clic, clic” en consolas y obtienes despliegues consistentes en AWS, Digital Ocean y más, mientras el código funciona como documentación viva. Además, evitas errores típicos de producción y preparas el terreno para Continuous Integration.
¿Qué es infraestructura como código y por qué importa?
Adiós a configurar a mano en la consola. La configuración manual no escala y abre la puerta a errores graves: nombres como “test” en producción, recursos borrados por confusión y dependencias invisibles. Infraestructura como código estandariza cada decisión y la vuelve auditable, legible y reproducible.
¿Qué problemas resuelve en producción?
- Reproducibilidad entre regiones y entornos con el mismo código y parámetros.
- Visibilidad: el código se convierte en documentación de la infraestructura.
- Consistencia: evita configuraciones divergentes por cambios manuales.
- Seguridad operativa: menos riesgo de borrar o modificar recursos críticos.
¿Cómo evita errores humanos comunes?
- Evita “grupos” o redes con nombres de prueba en producción.
- Define asociaciones explícitas, por ejemplo, entre un security group y otros recursos.
- Centraliza decisiones: no buscas “dónde está asociado esto”, lo lees en el código.
¿Cómo Terraform estandariza y escala la infraestructura?
Terraform permite describir recursos con código y aplicar la misma definición en múltiples regiones. Los módulos y parámetros te dejan ajustar región, tamaño o cantidad de instancias sin reescribir. Además, resuelve dependencias entre recursos y soporta múltiples providers en una misma configuración.
¿Qué es un módulo y cómo se parametriza?
- Un módulo encapsula recursos como en Node o cualquier lenguaje modular.
- Cambias región con un parámetro: lanzas la misma infraestructura en otra ubicación.
- Ajustas tamaño o número: “dame N máquinas” o “una máquina más grande”.
- Asocias recursos entre sí mediante parámetros declarativos.
¿Cómo maneja dependencias entre recursos?
- Un recurso “droplet” de Digital Ocean debe existir antes de publicar un DNS record.
- El dnsSimple record apunta al valor del “ipv4_address” del droplet creado.
- Terraform conoce el orden: crea primero el droplet y luego el record de dnsSimple.
¿Qué proveedores puedes combinar?
- Mezcla Digital Ocean con dnsSimple en la misma configuración.
- Integra “un sinnúmero de providers” disponibles.
- Extiende con providers y módulos propios cuando lo necesites.
¿Qué herramientas y prácticas se mencionan para el flujo de trabajo?
El paralelo es claro: lo que Docker hizo por aplicaciones, Terraform lo hace por infraestructura. Aunque aquí se muestra un vistazo de Terraform, se usará Now para abstraer la infraestructura y enfocarse en el desarrollo. Luego se presentarán principios de Continuous Integration.
¿Cuándo usar Now vs. tu propia infraestructura?
- Now provee toda la infraestructura: no te preocupas por servidores ni redes.
- Si quieres control total o infraestructura propia, usa Terraform con módulos y providers.
¿Qué habilidades refuerzas con este enfoque?
- Escribir y versionar infraestructura como código.
- Diseñar módulos y parametrizar región, tamaño y cantidad.
- Leer el código como documentación técnica viva.
- Operar despliegues multi-región de forma consistente.
- Gestionar dependencias entre recursos y DNS de forma declarativa.
- Compartir buenas prácticas en tu compañía y hacerlas escalables.
¿Te gustaría aportar tus prácticas con Terraform o cómo estandarizas despliegues con Now? Comparte tu experiencia en los comentarios.