Herramientas de aprovisionamiento para la creación de configuraciones en servidores

Las herramientas de aprovisionamiento nos permiten crear configuraciones de servidores por medio de código y permiten automatizar procesos de despliegue y administración de máquinas individuales o granjas de servidores. En los últimos años hemos visto el aumento de su popularidad, y cómo se han convertido en herramientas indispensables para multitud de empresas.

Por qué realizar el aprovisionamiento por medio de código

En las etapas de creación y puesta en marcha de un proyecto participan diversos tipos de profesionales. Generalmente los desarrolladores comienzan el trabajo y llega un momento en el que los administradores de sistemas tienen que poner en marcha los servidores y desplegar las aplicaciones.

Sin embargo, esta dualidad de perfiles no siempre ha sido todo lo positiva que cabría desear. Por diversos motivos era habitual que surgiera cierta fricción entre los desarrolladores y administradores de sistemas, que provocaba retrasos o incrementos de la carga de trabajo de los proyectos. Así es como surgió el perfil de «Devops», que es un profesional capaz de desempeñar tareas a caballo entre el desarrollo y las operaciones de administración. Este tipo de perfil, ha venido acompañado de nuevos tipos de herramientas, como las de aprovisionamiento, que facilitan el trabajo entre el desarrollo y la administración de sistemas.

En resumen, las herramientas de aprovisionamiento permiten la administración y configuración de las máquinas por medio de la declaración y creación de procedimientos escritos en archivos de código y esto aporta varias ventajas:

  • El aprovisionamiento se puede configurar una vez y ejecutarlo varias veces en uno, decenas o cientos de servidores, evitando mucho trabajo repetitivo y facilitando el día a día del despliegue de aplicaciones.
  • El código es fácil de entender e ilustra correctamente los pasos para la creación de una configuración de servidor. Es mucho mejor que esté escrito en archivos, en lugar de simplemente en la cabeza de un administrador de sistemas.
  • Si surge cualquier problema de configuración, es posible corregirlo y volver a correr las herramientas de aprovisionamiento, creando las máquinas con las configuraciones correctas y actualizadas.
  • La configuración de los servidores puede permanecer junto con el código del proyecto, disponible para cualquier integrante del equipo.

Todas estas ventajas, además de facilitar los flujos de desarrollo y despliegue de las aplicaciones, combinan muy bien con la tendencia actual de la virtualización. Gracias a la virtualización es muy sencillo crear servidores, prácticamente al instante, y aprovecharse de las herramientas de aprovisionamiento para automatizar los procesos configuración y despliegue.

Qué herramientas tenemos disponibles para el aprovisionamiento

Existen diversas herramientas y la mayoría de ellas son compatibles con cualquier proveedor de servidores cloud. Veamos ahora las más importantes.

Ansible

Es un sistema basado en Python para la creación de configuraciones de servidores. Requiere únicamente las credenciales de acceso SSH al servidor, ejecutando «playbooks» que especifican los pasos de aprovisionamiento de manera secuencial.

Terraform

Permite definir por código la secuencia de ejecución para aprovisionamiento, lo que se denomina «plan». Las ventajas y posibilidades son similares a las de Ansible, pero en este caso ofrece algunas utilidades extra para la integración con herramientas devops y el «gitflow».

Puppet

Es una herramientas orientada a los administradores de sistemas, que permite sobre todo orquestar grandes cantidades de servidores sin tener que entrar en cada uno de ellos y hacer las cosas por separado. Es extremadamente potente, pero tiene la desventaja de requerir un servidor «master» que contiene la configuración del estado de la infraestructura que se requiere obtener y agentes en los servidores administrados.

Chef

Está basado en el lenguaje Ruby, igual que Puppet, pero en este caso es más orientado a desarrolladores, ya que la configuración de los servidores se realiza por medio de procedimientos. También comparte con Puppet la necesidad de mantener un servidor maestro que almacena las configuraciones.

Conclusión

A día de hoy no hay un claro ganador entre las herramientas de aprovisionamiento. Todas ofrecen cosas similares, aunque a veces varían los mecanismos para obtenerlas. Por ello, el propio perfil del profesional puede llevarnos a escoger una u otra. Administradores de sistemas pueden sentirse más identificados con Ansible o Puppet, mientras que los desarrolladores pueden preferir Terraform o Chef.