Infrastructure as Code (IaC): Definición, Tools, Ejemplos
Infrastructure as Code (IaC) maneja infraestructura vía código versionado declarativo — Terraform, Pulumi, CDK, Ansible. Reemplaza clicks manuales.
¿Qué es Infrastructure as Code (IaC)?
Infrastructure as Code (IaC) es la práctica de manejar infraestructura (servidores, redes, bases datos, load balancers, DNS, políticas IAM) a través de código en vez de clicks manuales console o scripts one-off. El código vive en version control, es revisado en pull requests, y aplicado vía CI/CD.
IaC se ha vuelto fundamental para cualquier deployment cloud non-trivial.
¿Por qué IaC?
- Reproducibilidad.
- Version control.
- Disaster recovery.
- Documentación por default.
- Auditabilidad.
- Testing.
- Colaboración.
- Modularidad.
Comparación tools IaC
| Tool | Tipo | Lenguaje | Mejor para |
|---|---|---|---|
| Terraform / OpenTofu | Declarativo | HCL | Multi-cloud |
| AWS CloudFormation | Declarativo | YAML/JSON | AWS-only |
| AWS CDK | Imperativo | TS, Python, Java | AWS, programmer-friendly |
| Pulumi | Imperativo | TS, Python, Go | Multi-cloud |
| Azure Bicep | Declarativo | Bicep DSL | Azure-only |
| Ansible | Imperativo | YAML | Config management + IaC |
| K8s manifests / Helm | Declarativo | YAML | Deployment app K8s |
| Crossplane | Declarativo | YAML | Cloud control K8s-nativo |
Declarativo vs imperativo IaC
| Aspecto | Declarativo | Imperativo |
|---|---|---|
| Describes | Estado deseado | Pasos |
| Tool descubre | Cómo llegar | Lo que escribiste |
| Idempotencia | Built-in | Tú la manejas |
| Lógica / loops | Limitada | Lenguaje completo |
Ejemplo Terraform
provider "aws" {
region = "eu-west-1"
}
resource "aws_s3_bucket" "website" {
bucket = "my-marketing-site"
}terraform init
terraform plan
terraform applyWorkflow IaC
- Escribir código infraestructura en repo
- Abrir PR con cambio
- CI corre
terraform plan - Reviewer chequea plan
- Merge → CI corre
terraform apply - Estado en remote backend
Mejores prácticas IaC
- Estado remoto con locking.
- Modularizar.
- Separar entornos.
- Plan antes apply.
- Pinear versiones tool + provider.
- No commitear secretos.
- Workspaces para multi-región.
- Detección drift.
- Policy as code.
- Taggear todo.
Pitfalls IaC comunes
- Cambios manuales driftean estado.
- State file en git.
- Sin state locking.
- Mega-monolith state.
- Valores hardcoded.
- Testing insuficiente.
- Warnings deprecation ignoradas.
- Olvidar plan destroy.
FAQ: Infrastructure as Code
¿Terraform o CloudFormation?
Terraform para multi-cloud. CloudFormation para AWS-only.
¿Diferencia entre IaC y configuration management?
IaC provisiona infraestructura. Config management configura OS/apps.
¿Debería usar módulos?
Sí para cualquier cosa reusable.
¿Dónde guardo el state Terraform?
Remote backend con locking: S3 + DynamoDB.
¿Cómo manejo secretos en IaC?
Referenciar de stores externos.
¿Qué es drift?
Cuando infraestructura real difiere del código declarado.
¿Puedo usar IaC para Kubernetes?
Sí.
Testea apps deployadas IaC con LoadFocus
Después de IaC provisioning, LoadFocus verifica que se maneja tráfico real. Regístrate en loadfocus.com/signup.
Herramientas LoadFocus relacionadas
Lleva este concepto a la práctica con LoadFocus — la misma plataforma que potencia todo lo que acabas de leer.