¿Qué es la infraestructura como código?
También llamado: IaC, Infrastructure as Code, Terraform, OpenTofu, Ansible
Definición
La infraestructura como código (IaC) consiste en describir servidores, redes, DNS y demás recursos en archivos de texto, en lugar de crearlos a mano desde un panel. Así se pueden versionar, revisar y reproducir.
Si un servidor se configuró a mano hace tres años, nadie recuerda exactamente cómo. Con IaC, la definición está en un repositorio Git: cualquier cambio se revisa como el código, y reconstruir todo desde cero es ejecutar un comando.
Ejemplo
Con Terraform u OpenTofu se declara qué recursos deben existir. Aquí, un servidor y su registro DNS (los nombres de los recursos dependen del proveedor):
resource "cloud_server" "web" {
name = "web-01"
server_type = "2cpu-4gb"
image = "debian-13"
location = "mad"
}
resource "dns_record" "web" {
zone = "example.com"
name = "@"
type = "A"
value = cloud_server.web.ipv4_address
ttl = 3600
}
$ tofu plan # muestra qué va a crear, cambiar o destruir
$ tofu apply # lo aplica
Herramientas habituales
| Herramienta | Para qué |
|---|---|
| Terraform / OpenTofu | Crear recursos en proveedores cloud, DNS, CDN… |
| Ansible | Configurar servidores: paquetes, usuarios, archivos |
| Pulumi | Lo mismo que Terraform, con lenguajes de programación |
| Dockerfile, manifiestos de Kubernetes | Describir contenedores y despliegues |
Errores habituales
- Cambiar a mano algo gestionado por IaC. La próxima ejecución lo deshará o fallará por la diferencia (drift).
- Guardar el archivo de estado de Terraform, que puede contener contraseñas, en un repositorio público.
¿Tienes un producto o servicio relacionado con Infraestructura como código? Anúnciate en este término.
Términos relacionados
- CI/CDCI/CD (integración y despliegue continuos) es la práctica de automatizar las pruebas y la...
- GitGit es un sistema de control de versiones: guarda el historial completo de cambios...
- Hosting cloudEl hosting cloud es alojamiento que se ejecuta sobre un conjunto de servidores en...
- KubernetesKubernetes es un sistema que gestiona contenedores en un grupo de servidores: decide dónde...
- DockerDocker es una herramienta para empaquetar una aplicación con todo lo que necesita (código,...
Categorías: DevOps