Fundamentos de Terraform con AWS: automatización y eficiencia en la nube
Fundamentos de Terraform con AWS
Objetivo
Implementar infraestructuras en la nube utilizando Terraform, garantizando escalabilidad y seguridad.
Dirigido a:
Programadores con conocimientos de infraestructura en la nube: AWS, Azure, Google, Oracle, etc.
Requisitos:
- Conocimientos de infraestructuras en la nube.
- Conocimientos básicos de programación.
- Acceso a una cuenta de AWS (existe capa gratuita).
PROGRAMA DEL CURSO
1 - Introducción a Terraform y AWS
Objetivo
- Describir los conceptos fundamentales de Terraform y AWS.
Duración de la unidad
1 Hora 45 MinutosContenido
Introducción a Terraform y AWS
Introducción a la Infraestructura como Código (IaC)
Ventajas de IaC
¿Qué es Terraform?
Características claves de Terraform
Proveedores
Planificación
Ejecución
Gestión del estado
Modularidad
Visión general de AWS
Principales servicios de AWS
Conceptos básicos de IaC y ventajas de usar Terraform
Conceptos básicos de IaC
Ventajas de usar Terraform
Ejemplo de IaC con Terraform y AWS
Resumen
2 - Instalación y configuración de Terraform
Objetivo
- Instalar y configurar Terraform en diferentes entornos.
Duración de la unidad
2 Horas 35 MinutosContenido
Instalación y configuración de Terraform
Creación de cuenta gratuita de AWS
Confirmación y activación
Instalación de Terraform
Requisitos previos
Descarga de Terraform
Instalación en Windows
Instalación en macOS
Instalación en Linux
Verificación de la instalación
Preparación del entorno
Configuración inicial de Terraform
Archivo de configuración principal (main.tf)
Configuración del Proveedor de AWS
Estructura de carpetas
Ejemplo completo
Primer proyecto con Terraform
Configuración del entorno de trabajo
Definición del proveedor de AWS
Creación de un recurso simple: instancia EC2
Inicialización y despliegue
Verificación y limpieza
Resumen
3 - Conceptos básicos de Terraform
Objetivo
- Comprender los conceptos básicos de Terraform.
Duración de la unidad
3 Horas 35 MinutosContenido
Conceptos básicos de Terraform
Configuración básica de Terraform
Requisitos previos
Estructura de un proyecto de Terraform
Configuración de proveedor (provider)
Definición de variables
Definición de recursos
Salida de información (Outputs)
Inicialización y despliegue
Variables y Outputs
Variables
Definición de variables
Uso de variables
Asignación de valores a variables
Outputs
Archivos de estado (state files)
Importancia de los archivos de estado
Estado local vs. estado remoto
Bloqueo de estados
Ejemplos prácticos
Comandos básicos de Terraform (init, plan, apply, destroy)
init
plan
apply
destroy
Uso de Workspaces en Terraform
Creación y cambio de Workspaces
Uso de Workspaces en la configuración de Terraform
Interacción entre Workspaces y el estado
Consideraciones y buenas prácticas
Resumen
4 - Proveedores y recursos en Terraform
Objetivo
- Configurar proveedores y definir recursos en Terraform.
Duración de la unidad
2 Horas 55 MinutosContenido
Proveedores y recursos en Terraform
Introducción a los Proveedores de Terraform
Configuración de múltiples proveedores
Proveedores de Terraform
AWS (Amazon Web Services)
Azure (Microsoft Azure)
Google Cloud Platform (GCP)
Oracle Cloud Infrastructure (OCI)
Proveedor de AWS
Configuración del proveedor de AWS
Especificación de las credenciales de AWS
Ejemplo de recurso AWS
Gestión de recursos básicos en AWS (EC2, S3, IAM)
Provisión de una instancia EC2
Creación de un bucket S3
Gestión de usuarios IAM
Uso de Data Sources para obtener información de AWS
Concepto de Data Sources
Definiendo un Data Source
Uso Avanzado de Data Sources
Integración con Proveedores y Recursos
Creación de una infraestructura básica en AWS
Configuración del proveedor de AWS
Declaración de una VPC
Creación de subredes
Instancia de EC2
Par de claves SSH
Asociación de seguridad
Resumen
5 - Modularización en Terraform
Objetivo
- Diseñar y aplicar la modularización en Terraform.
Duración de la unidad
4 Horas 45 MinutosContenido
Modularización en Terraform
Concepto de módulos en Terraform
Estructura de un módulo
Declaración de un módulo
Uso de variables en módulos
Outputs en módulos
Creación de módulos reutilizables
Buenas prácticas para la reutilización de módulos
Mantén una estructura de archivos organizada
Usar nombres descriptivos para variables y recursos
Proveer valores predeterminados sensatos
Declarar salidas útiles
Manejar versiones de módulos
Documentar el módulo
Validar el módulo
Estructuración de proyectos con módulos
Definición de módulos
Ejemplo de módulo
Uso de módulos en el proyecto principal
Conclusión
Ejemplos prácticos de uso de módulos
Ejemplo 1: Módulo de red VPC (Virtual Private Cloud)
Ejemplo 2: Módulo de instancia EC2
Ejemplo 3: Módulo de configuración de seguridad (Security Group)
Gestión de dependencias entre módulos
Dependencias automáticas
Dependencias explícitas
Pasando información entre módulos
Truco: Utilizar dependencias explícitas para esperar un determinado tiempo
Resumen
6 - Variables, Data Sources y Outputs Avanzados
Objetivo
- Configurar variables, fuentes de datos y salidas avanzadas en Terraform.
Duración de la unidad
4 Horas 15 MinutosContenido
Variables, Data Sources y Outputs Avanzados
Variables de entrada y Output
Definición de variables de entrada
Uso de variables de entrada
Definición de Outputs
Uso de Outputs
Ejemplo completo
Fuentes de datos (Data Sources)
Ejemplo de uso de Data Sources
Uso de Data Sources para otras referencias
Expresiones y funciones en Terraform
Expresiones en Terraform
Expresiones aritméticas
Expresiones condicionales
Expresiones For
Expresiones funcionales
Expresiones de ciclo de vida
Funciones en Terraform
Funciones de cadena
Funciones numéricas
Funciones de colección
Funciones de condición
Uso avanzado de Outputs
Uso de Outputs para mostrar valores sensibles
Outputs para interoperabilidad entre módulos
Uso de Outputs en conjunción con Data Sources
Referencias a Outputs de otras configuraciones
Interpolación de variables
Conceptos básicos de interpolación de variables
Ejemplo básico de interpolación
Interpolación compleja
Interpolación en módulos
Interpolación y seguridad
Resumen
7 - Gestión del estado y bloqueos
Objetivo
- Gestionar el estado y los bloqueos en Terraform.
Duración de la unidad
2 Horas 30 MinutosContenido
Gestión del estado y bloqueos
Gestión del archivo de estado (state file)
Almacenamiento local vs. remoto
Seguridad del Archivo de Estado
Política de IAM para gestionar el archivo de estado en S3
Bloqueos y concurrencia en Terraform
Concepto de bloqueo en Terraform
Bloqueo en Amazon S3
Detección y resolución de deadlocks
Prácticas recomendadas de bloqueo
Concepto de concurrencia en Terraform
Ejemplo práctico de concurrencia y bloqueos
Escalabilidad y bloqueos distribuidos
Automatización avanzada y herramientas de terceros
Migración de backends
Inicializar el backend remoto
Validación y verificación
Prácticas recomendadas para la gestión del estado
Almacenamiento remoto del estado
Habilitación de bloqueo de estado
Versionado del estado
Seguridad del estado
Validación y mantenimiento del estado
Manejo de conflictos en el estado
Automatización del estado
Auditoría y registro de cambios
Optimización del estado para escalabilidad
Acceso controlado al estado
Resumen
8 - Buenas prácticas y seguridad
Objetivo
- Utilizar buenas prácticas para implementar infraestructuras en la nube utilizando Terraform.
Duración de la unidad
2 Horas 40 MinutosContenido
Buenas prácticas y seguridad
Buenas prácticas en Terraform
Organización de archivos y directorios
Manejo del estado de Terraform
Versionado y control de código
Reutilización de código con módulos
Uso de variables y Outputs
Seguridad en AWS con Terraform
Gestión de identidad y acceso (IAM)
Cifrado y protección de datos
Monitoreo y auditoría
Auditoría y gestión de cambios
Monitorización de logs y auditoría
Implementación de controles de acceso
Integración con sistemas de control de versiones
Planificación y revisión de cambios
Gestión de credenciales y secretos
Almacenamiento seguro de credenciales
Uso de variables de entorno y archivos de configuración
Uso de módulos para encapsular lógica sensible
Permisos y roles específicos para ejecución de Terraform
Implementación de políticas de seguridad en Terraform
Concepto de módulos y reutilización segura
Uso de Sentinel para políticas de seguridad avanzadas
Integración de escaneos de seguridad automatizados
Implementación de controles de acceso
Cifrado y almacenamiento seguro de secretos
Resumen