Gestión de la configuración
Describir cómo deben estar armados los servidores y que una herramienta los mantenga así.
Una empresa puede tener cientos de servidores que necesitan los mismos usuarios, paquetes, ajustes y parches de seguridad. Hacerlo a mano, entrando a cada uno, es lento y propenso a errores: tarde o temprano dos servidores que deberían ser idénticos no lo son. La gestión de la configuración (configuration management) resuelve esto escribiendo en archivos el estado deseado de cada máquina y dejando que una herramienta haga que todos los servidores coincidan con él.
Las herramientas más conocidas son Puppet, Chef y Ansible. Puppet y Chef suelen instalar un pequeño agente en cada servidor que se reporta cada tanto y corrige lo que se haya desviado de la descripción. Ansible no necesita agente: se conecta por SSH y ejecuta tareas escritas en archivos YAML llamados playbooks. En todas, los pasos buscan ser idempotentes, o sea que correrlos dos veces no cambia nada la segunda vez: "asegurate de que nginx esté instalado" en lugar de "instalá nginx".
Es pariente cercana de la infraestructura como código. Herramientas como Terraform crean los servidores, las redes y las bases de datos; la gestión de la configuración prepara lo que corre adentro. Con contenedores y golden images, muchos equipos hoy dejan todo armado antes de arrancar la máquina en vez de arreglarla después, pero la gestión de la configuración sigue en todos lados, sobre todo en flotas de máquinas que viven mucho tiempo.
Para quedarse
- Describís el estado deseado; la herramienta hace que cada servidor coincida.
- Puppet y Chef usan agentes; Ansible se conecta por SSH, sin agente.
- Las buenas tareas son idempotentes: correrlas de nuevo no cambia nada.
- Terraform construye los servidores; la gestión de la configuración los prepara.
Para seguir leyendo
- ¿Qué es la gestión de la configuración? (Red Hat)
- Ansible en Wikipedia
- Documentación de Ansible (en inglés)