Puppet, Salt, Chef y Ansible: Una comparación

Tiempo de lectura: 8 minutos

¿Cuál es el adecuado para ti?

Tabla de contenidos

I. Puppet II. SaltStack III. Chef IV. Ansible IV. Conclusión

Introducción

Configurar un único servidor con el software necesario es una tarea razonablemente sencilla. Sin embargo, si numerosos servidores necesitan tener el mismo o similar software y configuraciones instaladas en ellos, el proceso utilizaría numerosas horas de trabajo para completarlo, lo que agotaría sus recursos ya agotados. Sin alguna forma de automatización, esta tarea puede resultar casi insuperable. Con esta tarea en mente, se desarrollaron nuevas herramientas de gestión de la configuración para hacer frente a la necesidad de desplegar nuevos servidores con configuraciones y actualizaciones prefabricadas, que permitieran un proceso de automatización más suave y manejable. Para mantener la sincronización de estos servidores y gestionar las actualizaciones en una amplia franja de hosts en un centro de datos o un entorno en la nube, las herramientas de automatización como Puppet, SaltStack, Chef y Ansible satisfacen esta necesidad.

Elegir las herramientas de gestión adecuadas para utilizar en su infraestructura es una decisión crítica. Por eso repasamos las opciones disponibles para estos proyectos. Estas herramientas son las que más beneficios ofrecen tanto a los DevOps como a los sysadmins. Esperamos que esta información pueda orientarle en la dirección correcta. Si bien es cierto que todas las herramientas de configuración mencionadas anteriormente probablemente cumplirán con estas tareas, cada una ofrece diferentes metodologías y funciones de maneras algo diferentes para lograr este objetivo. Este artículo pretende mostrarle algunas de las diferencias esenciales que ofrece cada plataforma de gestión de software. Esto le permitirá tomar una decisión más informada, ya que tratamos de tocar cada título de software y sus beneficios, y luego ofrecer una visión general al final

.

Puppet

Puppet es una de las herramientas de gestión más antiguas y de mayor confianza de nuestra lista. Debido a esto, ofrece una base de apoyo más amplia dentro de la comunidad de Puppet, así como del equipo de Puppet. Puppet también ofrece una edición de código abierto de su software que se puede instalar en una amplia variedad de sistemas operativos. Sin embargo, la versión empresarial del software es capaz de abarcar sistemas más grandes como el AIX de IBM o el hardware F5 Big-IP. Hay que tener en cuenta que el servidor maestro de Puppet sólo puede instalarse en sistemas operativos Unix/Linux.

Un despliegue de Puppet suele estar compuesto por un servidor maestro y múltiples máquinas cliente (que se denominan Agentes). Puppet es una de las herramientas de esta lista que utiliza su propio y único lenguaje que está basado en Ruby. El DSL (o Lenguaje Específico de Dominio) de Puppet se utiliza para describir el estado deseado de su sistema dentro de un archivo, que se llama archivo de manifiesto. Los archivos de manifiesto son fundamentalmente un conjunto de configuraciones o tareas que determinan cómo se configuran sus recursos de red y del sistema operativo (como servicios, paquetes y archivos). A continuación, Puppet compila los archivos de manifiesto en catálogos y empuja cada catálogo a su nodo designado para que el nodo se reconfigure al estado deseado en toda la infraestructura.

Puppet ofrece además una interfaz de usuario intuitiva y sencilla basada en la web que se utiliza para completar un número más significativo de tareas, incluyendo la gestión de nodos en tiempo real. Además, como Puppet está configurado en una forma de arquitectura multimaster, si el master actualmente activo se cae, otro master sustituirá al anterior para evitar la degradación de la disponibilidad.

Puppet actualiza la configuración de los nodos haciendo que los clientes comprueben la actualización de los manifiestos en el maestro y, a continuación, extrae las nuevas configuraciones del servidor maestro. Debido a esta característica, Puppet está más orientado a los administradores de sistemas que muchas de las otras herramientas mencionadas aquí. Una desventaja de Puppet es que no hay ejecución remota inmediata disponible para los nodos. Además, Puppet tiene una curva de aprendizaje más pronunciada, debido al conocimiento requerido del DSL de Puppet y de los lenguajes de programación Ruby.

Top

SaltStack

SaltStack (también llamada Salt) es una de las herramientas más nuevas de esta lista. Sin embargo, sigue siendo muy relevante en el ámbito de la gestión de la configuración del software. Salt tiene una comunidad relativamente activa y un soporte eficaz. Salt está diseñado para permitir una comunicación de baja latencia y alta velocidad, y la transmisión de datos entre los nodos para la ejecución remota. Salt está diseñado para trabajar con los sistemas operativos Unix/Linux y Windows, pero el servidor Salt Master sólo puede trabajar en sistemas operativos Unix/Linux.

SaltStack se compone de un Salt Master, que es el servidor central de Salt, y de clientes que se llaman Salt Minions, que se ejecutan como agentes en cada una de las máquinas de los nodos. Dominar el lenguaje de Salt es relativamente fácil, ya que sus configuraciones legibles por humanos utilizan archivos Python y YAML, que es una de las estructuras de datos más naturales y sencillas. Mientras que Puppet trabaja de una manera en la que los nodos solicitan las actualizaciones, Salt trabaja en oposición a esto. El maestro de Salt empuja todas las configuraciones a todas las máquinas cliente. Además, Salt sirve como un servidor de archivos asíncrono, lo que aumenta la velocidad de las transferencias de archivos que sirven a los Minions de Salt. La velocidad de despliegue es uno de los principales objetivos de la filosofía de Salt.

Salt también puede funcionar en una configuración multimaster. Si un servidor maestro de Salt se cae, los agentes se conectarán a otro maestro listado en la configuración. Esta característica aumenta la disponibilidad general y la redundancia del sistema en su conjunto. Un beneficio adicional de Salt es que permite la ejecución en paralelo de múltiples comandos a la vez. Estos comandos son encriptados mediante AES (Advanced Encryption Standard) y enviados a los nodos cliente mediante el protocolo SSH. Una última ventaja de Salt es que puede gestionar múltiples maestros. Salt también ofrece una interfaz de usuario web; sin embargo, tiene capacidades y características limitadas.

Top

Chef

Chef comenzó como una herramienta interna de despliegue de servidor a servidor antes de que fuera finalmente lanzada como software de código abierto en 2009. Un beneficio significativo de Chef es que también ofrece una gran comunidad de apoyo con amplia documentación y orientación. El software maestro y de nodo de Chef funciona tanto en sistemas Unix/Linux, pero sólo las versiones de cliente y estación de trabajo pueden desplegarse en servidores Windows.

Las opciones de configuración de Chef consisten en Libros de Cocina y Recetas. Las recetas son los archivos de definición que se pueden combinar con atributos, archivos, bibliotecas y otras recetas para construir Cookbooks. Estos libros de cocina pueden luego ser utilizados para el despliegue de clientes.

Chef consta de 3 componentes principales:

  • Estación de trabajo Chef – La estación de trabajo Chef es utilizada por los ingenieros de sistemas para crear, probar y desplegar los libros de cocina en los servidores maestros Chef.
  • Servidor maestro de Chef – Los servidores de Chef son esencialmente el centro donde se almacenan todos los datos de configuración de Chef. Esta información incluye libros de cocina, datos del servidor y otra información relevante.
  • Cliente de Chef – El cliente de Chef son las máquinas del nodo final gestionadas por los servidores maestros de Chef. Estos servidores extraen y ejecutan periódicamente las configuraciones de los libros de cocina desde el servidor maestro de Chef.
    • El lenguaje de programación de Chef es similar al de Puppet, en el sentido de que utiliza un DSL (Lenguaje Específico de Dominio) exclusivo de Chef, pero también admite scripts escritos en Ruby.

      Chef se configura principalmente como un servidor maestro de Chef, así como un servidor de respaldo en caso de que el servidor maestro central de Chef se caiga. Si se produce una interrupción, el servidor maestro de respaldo reemplazará al servidor maestro central de Chef. Así es como se incorpora la redundancia en el entorno de Chef. Chef también ofrece una automatización adicional de la nube y la infraestructura, además de flujos de trabajo automatizados, que se utilizan para proporcionar una entrega continua a las máquinas cliente. Una estipulación que debe tenerse en cuenta; El lenguaje principal favorece a los programadores, ya que requiere el uso de la secuencia de comandos orientada a DSL / Ruby en los libros de cocina. Chef y su infraestructura son muy estables y construidos para la fiabilidad. Chef también ofrece un orden de ejecución secuencial, a diferencia de, por ejemplo, Salt, que proporciona una ejecución paralela.

      Top

      Ansible

      Ansible es una de las herramientas más modernas utilizadas como solución de gestión de configuración. Podría decirse que es uno de los programas más populares debido a su simplicidad y configuración directa. Al igual que las herramientas anteriores, Ansible admite máquinas cliente tanto de Windows como de Unix/Linux, pero el servidor maestro de Ansible requiere un servidor basado en Unix/Linux.

      A diferencia de las herramientas anteriores, sólo es necesario un maestro Ansible para ejecutarse porque Ansible utiliza los protocolos SSH (o RDP para Windows) para abrir una conexión con los servidores cliente para ejecutar sus comandos secuenciales. Ansible es similar a Puppet en que los archivos de configuración de Ansible están basados en Python y utilizan archivos YAML para los datos estructurados. Estos archivos se llaman Playbooks. Ansible también admite una API de Python, que puede utilizarse para responder a eventos específicos para ejercer el control de los propios nodos. Ansible también puede utilizarse a través de una interfaz de línea de comandos. El uso de una interfaz CLI de este modo no requeriría el uso de un archivo de configuración si se trata de una tarea sencilla como reiniciar un servidor. Para tareas más complejas, es necesario un playbook ya que el servidor maestro empuja la información a los nodos cliente. Ansible también es adecuado para la ejecución remota de comandos en tiempo real o para la gestión de aplicaciones.

      En cuanto a la redundancia, Ansible suele configurarse como un único servidor maestro activo (denominado Instancia Primaria) ya que no es necesario que ningún agente se conecte a él. Se puede configurar un maestro secundario para que tome el relevo si el servidor maestro se cae. Dado que Ansible utiliza un enfoque sin agentes, puede desplegar cambios o enviar actualizaciones con relativa rapidez a todos los nodos por parte de un ingeniero. Una desventaja de Ansible es que los equipos cliente no comprueban ningún cambio de configuración periódico en el maestro principal.

      Top

      Conclusión

      En términos simples, un gestor de configuración proporciona una capa de abstracción entre la configuración existente de un servidor y su estado deseado. Este objetivo se logra centrándose más en un resultado específico en lugar de las tareas verbales necesarias para lograrlas.

      En nuestra revisión de estos cuatro productos, si buscamos una conclusión basada únicamente en la popularidad, el claro ganador es Ansible. Esto se debe al hecho de que un grupo mucho más amplio de administradores elige utilizar Ansible como su herramienta principal de gestión de la configuración en comparación con los otros productos en este artículo. Ansible tiene sus ventajas, ya que está dirigido más hacia un papel orientado a SysOps en cuanto a su estructura y paradigma. Salt es similar en este aspecto, pero se diferencia de Puppet y Chef ya que están más orientados a los desarrolladores. Además, Ansible es una de las opciones más sencillas de esta lista para instalar, configurar y empezar a usar de inmediato.

      Puppet, por su parte, sería la más accesible y fiable desde el punto de vista de la usabilidad. Aunque como se ha señalado anteriormente, es necesario un conocimiento práctico de Ruby para aprovechar al máximo su amplia gama de características, estructura y escalabilidad. La configuración de Puppet puede llegar a ser muy granular y a veces complicada, pero es la apuesta más segura si se busca un entorno de software no heterogéneo.

      Si lo que buscas es una herramienta de configuración que se agilice hacia una infraestructura más uniforme, Ansible y Salt serían más adecuados hacia ese objetivo. Salt en sí mismo es una de las herramientas más fiables y robustas en esta lista, pero se baja un nivel debido a la dificultad de la interfaz de usuario web para los principiantes a entender algunas de las opciones de configuración más profundas disponibles. Sin embargo, lo compensa con sus opciones avanzadas de escalabilidad y un entorno de trabajo accesible desde la perspectiva de los SysOps o administradores. También hay múltiples addons disponibles que mejoran y amplían las capacidades de la UI que mejoran la usabilidad y la funcionalidad.

      Chef en sí misma es una herramienta muy sencilla y bien diseñada. Ofrece un enfoque mejorado para la facilidad de acceso y un mayor nivel de practicidad que Puppet. Como se mencionó anteriormente, Chef puede plantear una notable curva de aprendizaje para los SysOps o administradores de sistemas que carecen de experiencia orientada al desarrollo, ya que requiere una comprensión más amplia de los lenguajes de programación y experiencia.

      En conclusión, Ansible es una opción directa para la gestión de la configuración de nivel de entrada debido a la documentación disponible, su estructura, y la facilidad de accesibilidad. Puppet también es una herramienta sólida, pero un usuario o equipo tendrá que aprender nuevos procedimientos de codificación y función para conquistar la curva de aprendizaje más pronunciada al utilizar su programación DSL (Domain Specific Language). En términos de usabilidad, escalabilidad y opciones multientorno, Salt resonará más claramente con los administradores de sistemas que deseen aprovechar sus muchas opciones y capacidades de escalado altamente atractivas. Chef tiene un diseño y una estructura bien diseñados y ofrece un nivel considerable de estabilidad. Puede haber alguna dificultad inicial con la curva de aprendizaje, ya que está más orientada a las habilidades de un programador. Todas estas herramientas desempeñan un papel específico a la hora de configurar tu infraestructura y sus estados deseados. Su utilización dependerá enteramente de tus necesidades de configuración, del soporte personal y del nivel de comodidad necesario para implementarlas.

      Top

      ¡Nos encantaría que te unieras a nosotros!

      Llámanos al 800.580.4985, o abre un chat o ticket con nosotros para hablar con uno de nuestros expertos asesores de Soluciones o Alojamiento Experimentado para saber cómo puedes aprovechar estas técnicas hoy mismo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.