logoUC
📚Curso disponible

Infraestructura como Código (IaC)

Domina IaC con Terraform (AWS): configura providers y credenciales; define variables, outputs y módulos reutilizables; gestiona state remoto y workspaces; aplica seguridad (least privilege, secretos, validación/policies), versionado e integración en CI/CD. Diseña estructuras escalables por entornos. Cierra con introducción a CloudFormation, diferencias clave respecto a Terraform y criterios prácticos para decidir cuándo usar cada uno.

15
Módulos

Contenido del curso

Tema 1 - Introducción a la Infraestructura como Código (IaC)

10 lecciones
1.1. Qué es la Infraestructura como Código (IaC)
1.2. Beneficios clave de usar IaC
1.3. Principales herramientas y ecosistemas de IaC
1.4. Comparación entre gestión declarativa y procedimental
1.5. IaC como parte del ciclo DevOps y CI/CD
1.6. Control de versiones y GitOps aplicado a IaC
1.7. Prevención de errores humanos y ahorro de tiempo
1.8. Reproducibilidad y portabilidad entre entornos
1.9. Seguridad, gobernanza y cumplimiento
1.10. Casos reales de uso y fallos evitables sin IaC

Tema 2 - Fundamentos de Terraform en Local

10 lecciones
2.1. ¿Qué es Terraform y cómo funciona internamente?
2.2. Instalación y primer archivo main.tf
2.3. El flujo base: init → plan → apply → destroy
2.4. Uso de recursos locales: random_id, null_resource y local_file
2.5. Estado local: terraform.tfstate y .backup
2.6. Ejercicios guiados: crear un archivo con contenido dinámico
2.7. Proveedores y estructura mínima de configuración
2.8. El poder de la destrucción controlada
2.9. Buenas prácticas desde el inicio: estructura y gitignore
2.10. Ejercicio final del tema: crear un “hello terraform” en disco con comandos en local

Tema 3 - Variables, Tipado y Módulos Básicos en Terraform

10 lecciones
3.1. Declaración de variables en Terraform
3.2. Tipos disponibles: string, number, bool, list, map, object
3.3. Archivo terraform.tfvars y otras fuentes de valores
3.4. Outputs: mostrar valores tras aplicar cambios
3.5. Inputs y outputs entre módulos
3.6. Creación y uso de un módulo local personalizado
3.7. Validaciones de variables y constraints
3.8. Condicionales y expresiones con ternarios
3.9. Comentarios, limpieza y formato del código con terraform fmt
3.10. Ejercicio final del tema: Módulo que crea un archivo parametrizado con nombre, contenido y sufijo aleatorio

Tema 4 - Estado de Terraform, Backend Local y Remoto (S3)

10 lecciones
4.1. ¿Qué es el archivo de estado (terraform.tfstate)?
4.2. Riesgos de no controlar el estado
4.3. Estado local por defecto: ventajas y limitaciones
4.4. Cómo inspeccionar el estado (terraform show, terraform state)
4.5. Configurar un backend remoto en AWS S3
4.6. Bloqueo de estado con DynamoDB para evitar concurrencia
4.7. Configuración del backend remoto en main.tf
4.8. Variables de entorno para credenciales de AWS
4.9. Migración del estado local al remoto (terraform init -migrate-state)
4.10. Buenas prácticas de gestión del estado

Tema 5 - Variables, Outputs y Archivos de Configuración

10 lecciones
5.1. Tipos de variables en Terraform (string, number, bool, list, map)
5.2. Archivo variables.tf y convenciones comunes
5.3. Valores por defecto y validaciones (validation, sensitive)
5.4. Uso de terraform.tfvars para configurar valores según entorno
5.5. Variables desde CLI y entorno (-var, TF_VAR_)
5.6. Outputs básicos y avanzados (sensitive, depends_on)
5.7. Reutilización de outputs entre módulos
5.8. Organización de archivos .tf: convención modular
5.9. Uso de comentarios y documentación dentro del código Terraform
5.10. Buenas prácticas para gestión de variables y outputs

Tema 6 - Estructura Modular: Creación y Consumo de Módulos Propios

10 lecciones
6.1. ¿Qué es un módulo en Terraform y por qué usarlo?
6.2. Estructura de un módulo: main.tf, variables.tf, outputs.tf
6.3. Repositorio local vs remoto de módulos
6.4. module block: sintaxis, parámetros y outputs
6.5. Refactorizar recursos existentes en un módulo
6.6. Uso de prefijos y nombres dinámicos en módulos
6.7. Modularización por capas: red, seguridad, cómputo, etc.
6.8. Paso de variables complejas (maps, objects) a módulos
6.9. Salida y encadenamiento de módulos con output
6.10. Buenas prácticas de desarrollo y testing de módulos

Tema 7 - Remote State y Backend Compartido (S3 + DynamoDB)

10 lecciones
7.1. ¿Qué es el Terraform State y por qué gestionarlo remotamente?
7.2. Ventajas del backend remoto frente al local
7.3. Configuración de bucket S3 como backend remoto
7.4. Activación de bloqueo de concurrencia con DynamoDB
7.5. Declarar backend en main.tf y diferenciar de provider
7.6. Inicialización del backend remoto con terraform init
7.7. Variables y estructuras en el backend block
7.8. Gestión de credenciales para acceder al backend
7.9. Visualización y restauración del estado desde S3
7.10. Buenas prácticas con Remote State en entornos reales

Tema 8 - Variables, Tipado, Validaciones y Sensibilidad

10 lecciones
8.1. Introducción a variables: definición y propósito
8.2. Tipado de variables: string, number, bool, list, map, object
8.3. Variables con valores por defecto vs requeridas
8.4. Ficheros .tfvars y su uso para sobreescribir valores
8.5. Paso de variables por CLI y variables de entorno
8.6. Validaciones con validation block dentro de variable
8.7. Marcado de variables como sensitive y su efecto en logs
8.8. Control de variables sensibles en salidas (output sensitive = true)
8.9. Definición de estructuras complejas: maps de objetos
8.10. Buenas prácticas en la organización y gestión de variables

Tema 9 - Outputs, Dependencias y Referencias Cruzadas

10 lecciones
9.1. ¿Qué son los outputs y para qué sirven?
9.2. Sintaxis del bloque output y uso de valores simples
9.3. Outputs con valores sensibles (sensitive = true)
9.4. Uso de outputs en módulos y reutilización entre capas
9.5. Referencias cruzadas entre recursos: resource.a.attr
9.6. depends_on para forzar orden de creación
9.7. Casos comunes de dependencia implícita y errores típicos
9.8. Exportación de outputs a otros sistemas (ej. scripts, CI/CD)
9.9. Agrupación y estructuración de outputs complejos
9.10. Buenas prácticas: nombrado, documentación y sensibilidad

Tema 10 - Estructura por Entornos: Dev, Staging y Producción

10 lecciones
10.1. ¿Por qué separar entornos en DevOps?
10.2. Carpetas separadas por entorno: estructura básica
10.3. Reutilización de módulos entre entornos
10.4. Archivos de variables específicos por entorno (*.tfvars)
10.5. Uso de workspaces vs estructura por carpetas
10.6. State remoto separado por entorno
10.7. Tags y nombres únicos por entorno
10.8. Estrategias de despliegue por capas (layered stacks)
10.9. Automatización por entorno con pipelines distintos
10.10. Buenas prácticas en entornos múltiples

Tema 11 - Terraform Remoto con S3 + DynamoDB (Bloqueo de Estado)

10 lecciones
11.1. ¿Por qué usar estado remoto en Terraform?
11.2. Configuración de un bucket S3 como backend
11.3. Organización del bucket S3 por entorno y carpeta
11.4. Protección del bucket y política de acceso
11.5. Creación de tabla DynamoDB para bloqueo de estado
11.6. Configuración del bloqueo en el backend remoto
11.7. Resolución de conflictos de estado remoto
11.8. Versionado de estados con S3
11.9. Alternativas al backend S3 (Google Cloud, Azure, etc.)
11.10. Buenas prácticas con estado remoto en equipos

Tema 12 - Variables, Outputs y Tipado Avanzado en Terraform

10 lecciones
12.1. Tipos de variables en Terraform
12.2. Uso de variables.tf y terraform.tfvars
12.3. Validaciones y restricciones con validation
12.4. Variables sensibles y encriptadas
12.5. Variables de entorno con TF_VAR_
12.6. Outputs básicos y avanzados
12.7. Outputs sensibles y dependientes de recursos
12.8. Uso de locals para lógica intermedia
12.9. Tipado de objetos complejos (object, tuple)
12.10. Buenas prácticas para declarar entradas y salidas

Tema 13 - Testing, Validación y Formato del Código Terraform

10 lecciones
13.1. Importancia del testing en IaC
13.2. Comando terraform validate y detección de errores sintácticos
13.3. Uso de terraform fmt para estilo uniforme
13.4. Herramientas de linting: TFLint
13.5. Configuración avanzada de TFLint con reglas personalizadas
13.6. Testing con terraform plan y validación de diferencias
13.7. Pruebas automáticas con Terratest (Go)
13.8. Validación estática con Checkov o Tfsec
13.9. Integración de validaciones en CI/CD (GitHub Actions)
13.10. Revisión entre pares y convenciones de PRs

Tema 14 - Seguridad y Gestión de Secrets en Terraform

10 lecciones
14.1. Principales riesgos de seguridad en código IaC
14.2. Uso adecuado de variables sensibles en Terraform
14.3. Evitar hardcoding de secretos en archivos .tf y .tfvars
14.4. Exclusión de archivos .tfstate del control de versiones
14.5. Encriptación del estado remoto con S3 y KMS
14.6. Separación de permisos por entorno (dev, staging, prod)
14.7. Uso de herramientas de gestión de secretos: AWS Secrets Manager, Vault, SOPS
14.8. Auditoría de cambios en secretos y variables sensibles
14.9. Evitar exposición de secretos en outputs o terminal
14.10. Validación automatizada de seguridad en CI con tfsec, checkov y opa

Tema 15 - Proyecto Final — Infraestructura Modular en AWS con Terraform

10 lecciones
15.1. Definición de la infraestructura objetivo
15.2. Estructura del proyecto modular
15.3. Creación del módulo de red (VPC, subnets, IGW, RT)
15.4. Módulo de cómputo (EC2 + SG)
15.5. Módulo de almacenamiento (S3)
15.6. Módulo de base de datos (RDS PostgreSQL)
15.7. Variables globales, archivos de entorno y workspaces
15.8. Backend remoto con S3 y DynamoDB
15.9. Pipeline de integración con Terraform CLI y GitHub Actions
15.10. Despliegue completo y validación final del entorno

¿Listo para empezar?

Aprende a desarrollar desde 0 con IA integrada. Practica, resuelve retos reales, con correcciones inmediatas y completamente tutorizado.