Bienvenidos al episodio 18 de deployandome, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 2 de agosto de 2017.
Hoy quiero comenzar a tratar uno de los temas claves de la administración moderna, también una de las principales tareas del DevOps, me refiero los “adiministrador de configuración:
¿qué es un administrador de configuración?
Para entenderlo, veamos primero cómo es la forma tradicional de administrar servidores. Lo hacemos entrando a ellos y haciendo los cambios necesarios: dar de alta usuarios, agendar tareas repetitivas en el crontab, ajustar los parámetros de seguridad, actualizar, y todo lo demás.
Las tareas repetidas se scriptean y esos scripts están en alguna carpeta de cada servidor para ayudarnos con esa administración.
Y después de hacer cambios, a plasmarlos en algún sistema de documentación que convenga al equipo de administración.
Esta forma tradicional de administración tiene muchos problemas:
El más notorio es que es un sistema que no escala ¿cuántos servidores podemos mantener así? ¿diez? ¿veinte? ¿cincuenta?
¿cómo resolvemos la configuración de instancias o servidores en la nube, donde necesitamos disponer de nuevos servidores rápidamente? ¿hacemos imágenes en el sistema de virtualización y nos transformamos en mantenedores o administradores de imágenes, en lugar de servidores?
Necesitamos automatizar. Necesitamos un software al cuál especificar nuestras necesidades de configuración y lo apliquen donde y cuando corresponda, a la cantidad de servidores que corresponda, en forma rápida y segura.
Y el software que hace eso es, precisamente, el Administrador de Configuración.
¿qué hace el administrador de configuración para mantener nuestra infraestructura?
Aprovisionamiento (provisioning):
todos los pasos que damos a nivel de instalación y configuración inmediatamente luego de terminar de instalar un sistema operativo básico para llevarlo a un nivel de “listo para usar”. El aprovisionamiento involucra los software adicional, los usuarios, los permisos, los servicios, las configuraciones de seguridad, el ajuste de configuraciones y todo lo demás para estar en nivel de producción.
Automatización (automation):
significa que no hacemos login en los servidores para hacer cambios o ajustar configuraciones. La administración de configuración supone que gestionamos los cambios en un “perfil” o en un lugar centralizado y que se aplica en nuestros servidores en forma automática.
La automatización también refiere a las tareas de “mantenimiento” que son necesarias luego de el aprovisionamiento inicial. Es decir, si los servidores que ya están en producción requieren la instalación de nuevos servicios, la adecuación de las políticas de seguridad, la creación de nuevos usuarios, habilitar o deshabitar certificados ssh en algún usuario determinado, configurar reglas de crontab, es decir, todo lo demás que puede ser necesario durante la vida útil de un servidor.
Y, por último, es automatización mantener el estado deseado de los servidores en forma imperativa. Es decir, que si algún sysadmin realizó un cambio en un servidor de forma que incumple alguna las configuración mantenida por el administrador de configuración, ese cambio va a ser ser revertido, se hará roll-back al estado deseado.
Y cuando tenemos aprovisionamiento y automatización ya no importa la cantidad de servidores, empezamos con el problema de dependencias en nuestra infraestructura,
Orquestación (orchestration):
es aquello necesario cuando gestionamos muchos servidores, decenas o cientos. O sea, para realizar una gestión de mantenimiento automatizado de un centro de datos.
Más en particular la orquestación es cuando utilizamos aprovisionamiento y automatización de forma inteligente en un grupo de servidores e involucra conceptos como el _centro de datos dinámico_ o la _infraestructura convergente_.
La orquestación tendrá a su cargo cosas como:
- las dependencias (qué servicio o servidor depende de que exista cual otro servicio o servidor),
- los recursos globales del centro de datos, los que están en uso y los que están disponibles
- el consumo y métricas de recursos
La orquestación será responsable de escalar hacia arriba o hacia abajo los recursos del centro de datos destinados a una tarea o servicio en particular.
Entonces, cuando juntamos gestión de aprovisionamiento, automatización de configuraciones y orquestación de servicios y servidores, estamos ante un sistema de “administración de configuración”.
Los administradores de configuración más conocidos son Ansible, Puppet, Chef y Salt. Cada uno de estos sistemas tienen características que lo hacen mejor o peor para determinadas tareas, pero en definitiva trabajan sobre el aprovisionamiento, la automatización y la orquestación.
Queda entonces presentado el administrador de configuración, pero seguiremos hablando de él, pues seguramente muchos de Ustedes se estarán preguntando si vale la pena el esfuerzo de aprender a usarlos para administrar tal vez unos pocos servidores bajo su responsabilidad, pero ¿qué les parece si lo dejamos para la próxima edición de deployandome?
Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me
Hasta la próxima edición.