Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Servidores y DevOpsNivel: Avanzado15 min de lección

¿Qué es Terraform e Infraestructura como Código (IaC)?

Cómo desplegar servidores en AWS, redes virtuales y bases de datos completas usando código declarativo, versionado y reproducible.

¿Qué es Terraform e Infraestructura como Código (IaC)?
AROS STUDENT
E
Equipo de Arquitectura DevOps ArostikEspecialistas en Cloud y Terraform · Actualizado el 25 sep 2026
¿Qué es Infraestructura como Código y qué es Terraform?

Históricamente, para levantar la infraestructura de una empresa en la nube (servidores virtuales EC2, redes VPC, subredes, tablas de enrutamiento, balanceadores de carga y bases de datos administradas), un ingeniero debía ingresar a la consola web de AWS o Azure y hacer cientos de clics manuales en formularios. Este enfoque manual (llamado despectivamente *'ClickOps'*) es lento, imposible de auditar, propenso a errores humanos catastróficos y si el datacenter se cae, reconstruirlo a mano toma semanas. **Infraestructura como Código (IaC - Infrastructure as Code)** es la práctica de ingeniería donde la infraestructura se describe mediante archivos de texto legibles, versionados en Git y ejecutables por máquinas. **Terraform** (creado por HashiCorp) es la herramienta de IaC declarativa más popular y utilizada del mundo. Utiliza un lenguaje propio llamado **HCL** (HashiCorp Configuration Language) y es compatible con prácticamente cualquier proveedor de nube existente (AWS, Google Cloud, Azure, Cloudflare, Kubernetes, DigitalOcean).

¿Cuáles son las Ventajas Revolucionarias de Terraform?
Ventajas y Beneficios:
  • ✓Enfoque Declarativo: Tú describes **qué quieres tener** (ej. *'quiero 3 servidores y una base de datos PostgreSQL'*); Terraform se encarga automáticamente de averiguar **cómo crearlo** llamando a las APIs de la nube en el orden de dependencias correcto.
  • ✓Previsualización Segura (`terraform plan`): Antes de tocar nada en la nube real, Terraform te muestra un diff exacto de qué recursos se van a crear (`+`), cuáles se modificarán (`~`) y cuáles se destruirán (`-`).
  • ✓Clonación de Entornos en Minutos: Puedes duplicar tu infraestructura completa de producción para crear un entorno de Staging idéntico cambiando una sola variable.
Problemas que resuelve:
  • •Elimina las diferencias de configuración invisibles entre entornos (Configuration Drift).
  • •Permite revisar cambios de infraestructura mediante Pull Requests en GitHub con aprobación de tus compañeros.
  • •Hace posible destruir toda la infraestructura de pruebas por la noche con un solo comando (`terraform destroy`) para no gastar dinero inútilmente.
Armar un Mueble a Mano Alzada vs el Plano de Corte CNC Automatizado

- **ClickOps Tradicional**: Un carpintero entra al taller e intenta cortar maderas midiendo con una regla gastada y haciendo memoria de lo que hizo el mes pasado. La mesa queda con una pata 2 centímetros más corta, el color no coincide y si le pides otra mesa igual, tardará dos semanas y saldrá diferente. - **Terraform (IaC)**: Creas un plano digital en código CAD. Introduces el archivo en una máquina de corte automatizado CNC (el ejecutor de Terraform). La máquina lee el plano, corta las 4 patas exactamente al milímetro y ensambla la mesa perfecta en 3 minutos. Si necesitas 100 mesas idénticas para una cadena de hoteles, solo presionas el botón 100 veces.

Conexión con la Tecnología:El archivo `.tf` es el plano CAD. El archivo `terraform.tfstate` es la memoria que registra qué muebles ya fueron cortados para no volver a cortarlos si vuelves a ejecutar el plano.

Explicación Paso a Paso del Tema

1

Escribir tu Primer Archivo de Infraestructura en HCL

Crea un archivo `main.tf` definiendo el proveedor y un recurso básico (como una instancia de servidor o un bucket de almacenamiento S3).

Observa la sintaxis limpia de bloques de recursos en HCL.

Comando de Terminal / Código
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "mi_almacenamiento" {
  bucket = "arostik-backup-archivos-2026"
  
  tags = {
    Entorno    = "Produccion"
    Gestionado = "Terraform"
  }
}
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
provider "aws"ProveedorPlugin que sabe cómo comunicarse con las APIs del servicio de nube específico.
resource "aws_s3_bucket"Tipo de RecursoDefine el objeto de infraestructura que se aprovisionará en la nube.
Consejo Profesional:

Guarda siempre tus credenciales de acceso (claves de API) en variables de entorno (`AWS_ACCESS_KEY_ID`), nunca las escribas en texto plano dentro de los archivos `.tf`.

2

El Ciclo de Vida: Init, Plan y Apply

La operación de Terraform sigue un flujo de tres comandos universales en la terminal: 1. `terraform init`: Descarga los plugins de los proveedores necesarios. 2. `terraform plan`: Calcula el estado actual, compara con el deseado e imprime el plan de acción. 3. `terraform apply`: Ejecuta las llamadas a las APIs de la nube y crea los recursos reales.

Nunca ejecutes apply sin haber revisado minuciosamente la salida de plan.

Comando de Terminal / Código
terraform init
terraform plan
terraform apply -auto-approve
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
initComandoInicializa el directorio de trabajo y descarga los binarios de proveedores en .terraform/.
planComandoMuestra la previsualización de cambios sin realizar modificaciones en la nube.
applyComandoAplica los cambios confirmados en la infraestructura remota.
Error Común a Evitar:

Subir el archivo `terraform.tfstate` al repositorio público de GitHub: puede contener contraseñas en texto claro de bases de datos creadas. Configura un Remote Backend cifrado en AWS S3 con bloqueo mediante DynamoDB.

3

El Archivo de Estado (State File) y Remote Backends

Terraform necesita saber qué recursos ya existen en la nube para no duplicarlos cada vez que corres el comando.

Para ello mantiene el archivo `terraform.tfstate`. En equipos profesionales, este archivo se guarda en un almacenamiento centralizado en la nube (Remote Backend) con bloqueo de concurrencia para evitar que dos ingenieros ejecuten `apply` a la vez y corrompan la infraestructura.

Consejo Profesional:

Si alguien modifica un recurso a mano por la consola web de AWS (ClickOps), `terraform plan` detectará la discrepancia (Drift) y te ofrecerá corregirla para que la nube vuelva a coincidir con el código.

Casos Prácticos Reales en Producción

Situaciones de ingeniería reales sin mención de presupuestos ficticios.

1La Reconstrucción de Emergencia de la Infraestructura de un Banco tras un Desastre

Escenario Real:

Un centro de datos de un proveedor de nube sufrió una inundación catastrófica que destruyó 50 servidores virtuales y redes completas de una fintech.

Solución de Ingeniería Aplicada:

Toda la infraestructura estaba completamente descrita en repositorios de Git con módulos de Terraform. Los ingenieros cambiaron la variable de región de `us-east-1` a `eu-west-1` y ejecutaron `terraform apply`.

Fichas Nemotécnicas de Conceptos Clave

Glosario rápido para recordar los términos fundamentales de la lección.

Infraestructura como Código (IaC)

Metodología que gestiona y aprovisiona recursos de infraestructura mediante código legible y ejecutable en lugar de procesos manuales.

HCL (HashiCorp Configuration Language)

Lenguaje declarativo y estructurado diseñado por HashiCorp para definir configuraciones de infraestructura legibles por humanos.

terraform.tfstate

Archivo que almacena el mapeo entre los recursos declarados en el código y los recursos físicos reales creados en la nube.

Autoevaluación Rápida3 preguntas

¿Qué es Terraform e Infraestructura como Código (IaC)?

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

¿Cuál es la principal diferencia entre un enfoque declarativo (como Terraform) y un script imperativo (como un script de Bash con comandos de AWS CLI)?

2

¿Qué hace el comando 'terraform plan' antes de aplicar cualquier cambio?

3

¿Por qué es crucial proteger el archivo 'terraform.tfstate' y no subirlo a repositorios públicos de Git?

Preguntas Frecuentes (FAQ)

¿Cuál es la diferencia entre Terraform y Ansible?

Terraform está diseñado principalmente para el **aprovisionamiento de infraestructura** (crear los servidores, redes, bases de datos y VPCs en la nube). Ansible está diseñado principalmente para la **gestión de configuración** (instalar paquetes, actualizar software y configurar archivos dentro del sistema operativo de esos servidores una vez que ya existen). Se complementan a la perfección.

¿Qué es OpenTofu?

En 2023, HashiCorp cambió la licencia de Terraform de código abierto a una licencia comercial restrictiva (BSL). La Linux Foundation y decenas de empresas crearon un fork comunitario 100% de código abierto llamado **OpenTofu**, que es un reemplazo directo y compatible con todos los archivos de Terraform.

Temas relacionados:#DevOps#Terraform#Cloud#IaC#AWS#Automatización