Ansible y Puppet
Ansible y Puppet son herramientas open source de la comunidad para automatizar la TI. Ambas pueden simplificar las operaciones de TI y el trabajo de DevOps mediante la automatización de las tareas rutinarias, como la configuración y la preparación de los sistemas, la implementación del software y la gestión de las actualizaciones en muchos servidores o dispositivos del extremo.
Ansible es conocida por su facilidad de uso, la cual se debe a un enfoque más flexible y sin agentes que no requiere la instalación de software adicional en los objetivos de la automatización. En cambio, las soluciones open source Puppet y Puppet Enterprise siempre han adoptado un enfoque basado en agentes que exige la instalación de software adicional en cada máquina. Ambas herramientas adoptan criterios distintos en torno a la automatización: Ansible utiliza un lenguaje que las personas pueden comprender para los archivos de configuración y emplea la automatización procedimental; es decir, establece los pasos que se deben seguir en orden. Puppet, por su parte, utiliza un lenguaje específico de dominio, lo cual exige que se conozca el lenguaje de programación Ruby, y emplea la automatización declarativa; es decir, define el estado deseado.
En este artículo se explican en detalle las similitudes y las diferencias entre Ansible y Puppet.
Automatización de la TI: versiones con soporte
¿Cuál es el lugar de Ansible y Puppet en el panorama amplio de herramientas de automatización de la TI? Ansible, Puppet, Salt y Chef son cuatro de las herramientas open source que más se utilizan para automatizar la TI. Hay distintas empresas que las ofrecen como versiones empresariales:
- Red Hat ofrece soporte para Red Hat® Ansible® Automation Platform.
- Perforce ofrece soporte para Puppet Enterprise, Puppet Bolt y otros productos.
- VMware ofrece soporte para VMware Aria Automation (Salt).
- Progress ofrece soporte para Chef Enterprise Automation Stack.
Diferencias entre Ansible y Puppet
Ansible
Ansible es una aplicación de software open source de la línea de comandos para la automatización de la TI que está escrita en Python. Puede configurar sistemas, implementar software y organizar los flujos de trabajo avanzados para respaldar la implementación de las aplicaciones, las actualizaciones del sistema y mucho más. Red Hat Ansible Automation Platform es un producto basado en Ansible que se adquiere a través de una suscripción y ofrece varias funciones empresariales.
La fortaleza de Ansible proviene de su comunidad. Hasta la fecha (otoño de 2022 en el hemisferio norte), su repositorio principal de GitHub cuenta con miles de colaboradores y decenas de miles de otros repositorios que dependen de Ansible. Cada año se celebra la famosa conferencia de usuarios AnsibleFest, y se organizan encuentros de Ansible con frecuencia en todo el mundo. Esta comunidad de usuarios entusiastas pone de manifiesto la gran cantidad de especialistas en Ansible y colaboradores que posibilitan su integración sólida con otros proyectos populares de software. Los usuarios de Ansible pueden acceder a cientos de módulos y complementos que permiten ampliar sus funciones.
El diseño de Ansible se centra en la simpleza y la facilidad de uso. También prioriza la seguridad y la confiabilidad, ya que contiene pocos factores que se deben ajustar. Utiliza OpenSSH para el traslado (y otros medios de transporte y modos de extracción alternativos) y emplea un lenguaje en los playbooks de Ansible que las personas pueden comprender (YAML) y que permite comenzar a usar la herramienta rápidamente sin mucha capacitación de por medio.
Ansible aplica los conceptos del nodo de control (el lugar desde el que se ejecuta Ansible) y los nodos gestionados (los extremos que se automatizan), los cuales pueden incluir los servidores Linux® y Windows, los dispositivos de red y muchas otras plataformas virtuales, de nube pública, de servidor dedicado (bare metal) y de contenedores. Dado que Ansible no tiene agentes, puede comunicarse con varios extremos sin la necesidad de instalar una aplicación ni un servicio en el nodo gestionado. A modo de ejemplo, muchos enrutadores y conmutadores de red son sistemas cerrados donde generalmente no se pueden instalar agentes de software.
Ansible utiliza un enfoque de programación procedimental (o imperativo), en el que se intenta conservar la configuración de la infraestructura de TI estableciendo los pasos para lograr el estado deseado.
Puppet
Puppet es una aplicación open source para automatizar la TI que está escrita en Ruby y se ofrece como un conjunto de productos, que incluye Puppet Enterprise. Uno de sus beneficios principales es la capacidad de ajuste. Esta aplicación utiliza un enfoque basado en modelos con la ejecución imperativa de las tareas, y está diseñada para automatizar las infraestructuras híbridas a gran escala.
Si bien Puppet cuenta con una comunidad open source activa, en comparación con Ansible tiene menos colaboradores y proyectos que dependen de ella, según la información de GitHub hasta el otoño de 2022 en el hemisferio norte. Las contribuciones a su repositorio principal han disminuido considerablemente.
Además, el funcionamiento de Puppet difiere del de Ansible. Por lo general, se ejecuta como una solución basada en agentes, así que es necesario instalar un sistema de software en cada dispositivo que se gestiona, aunque también incluye funciones sin agentes.
Puppet sigue el concepto de programación declarativa; es decir, el usuario define el estado deseado de las máquinas gestionadas. Implementa un lenguaje específico de dominio (DSL) para definir estas configuraciones. Luego, automatiza los pasos necesarios para que los sistemas alcancen los estados definidos. Puppet utiliza un servidor principal (donde se almacenan los estados definidos) y un agente propio (que se ejecuta en los sistemas que especifica el usuario) para la automatización.
Terminología de la automatización
La arquitectura basada en agentes hace referencia a un modelo de infraestructura y automatización que requiere la ejecución de elementos específicos de software, denominados agentes, en el inventario gestionado. Es necesario instalar el agente y todas sus dependencias en cada nodo objetivo, lo cual implica que se deba contar con reglas y verificaciones de seguridad adicionales. Esto puede suponer un desafío a la hora de automatizar los objetos donde no puede ejecutarse o no está disponible el agente. Además, todos estos elementos de software también deben mantenerse como parte del ciclo de vida de soporte para las empresas.
La arquitectura sin agentes que se utiliza en Ansible es una forma de automatizar y administrar los dispositivos de TI sin la necesidad de instalar agentes en los entornos gestionados. El software de control se conecta a las máquinas remotas mediante conexiones SSH estándares y seguras y comienza a gestionarlas sin perder mucho tiempo en la configuración. Esta arquitectura elimina la necesidad de mantener un sistema de implementación de agentes luego de que se completan las etapas de preparación y configuración.
La programación declarativa es un método de escritura del código en el que se describe el resultado deseado del programa, en lugar de explicar en detalle los pasos para lograrlo. Es decir, se utiliza el lenguaje declarativo para centrarse en el estado final en vez de indicar los comandos y las instrucciones específicas.
La programación procedimental o imperativa es un método de escritura de código mediante el cual se brinda a la computadora la guía detallada de instrucciones para completar una tarea. Se centra en el proceso, en lugar del estado final. Ansible utiliza YAML para la automatización, un lenguaje de serialización de los datos comprensible para las personas. La sintaxis de YAML se interpreta y ejecuta de forma procedimental; es decir, el flujo de trabajo de automatización se desarrolla en el orden en que se escribió.
La solución de automatización preferida
Para elegir la solución de automatización, es necesario tener en cuenta no solo las funciones disponibles en el software actual, sino también las perspectivas a largo plazo para la plataforma. Ansible se destaca por su comunidad open source sumamente activa y el respaldo comercial de Red Hat.
También es habitual que las empresas utilicen varias soluciones de automatización. Ansible se conecta a un amplio ecosistema de integraciones y puede utilizarse como el método para organizar muchas otras herramientas de automatización y gestión de la configuración. También permite automatizar los sistemas en los proveedores de nubes públicas principales, como Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform, etc.
En comparación con Puppet, Ansible es la opción más elegida entre los usuarios que aprovechan todo el conocimiento y la experiencia y que priorizan la facilidad de uso y la solución de automatización sin agentes. Además, cuenta con una comunidad extensa de colaboradores, su adopción está muy extendida y tiene gran reconocimiento por su integración con las demás herramientas.
Automatización empresarial: Red Hat marca la diferencia
Red Hat Ansible Automation Platform es un producto open source probado y con seguridad reforzada que se obtiene a través de las suscripciones de pago y que ofrece soporte durante todo el ciclo de vida para las empresas. Ansible, su proyecto upstream, se beneficia de la experiencia y el conocimiento de los miles de colaboradores en todo el mundo.
La plataforma incluye varios elementos del proyecto upstream, más de 130 conjuntos certificados Red Hat Ansible Content Collections de más de 60 partners y herramientas de retorno sobre la inversión (ROI) como servicio que le permiten abordar la instalación, la configuración y el soporte de la automatización en su empresa sin incertidumbres. Crea una experiencia integral para los equipos interdisciplinarios y permite que los equipos de operaciones, los ingenieros y los desarrolladores de la automatización intercambien el contenido listo para usar.
Las funciones de Red Hat Ansible Automation Platform, como Red Hat Insights y el análisis de la automatización, brindan información accesible sobre el rendimiento de la automatización, para que pueda medir su impacto y supervisar o resolver los problemas con mayor precisión. La malla de automatización le permite ajustar la capacidad de control y de ejecución de forma separada, lo cual acerca la automatización a los extremos donde es necesaria, prácticamente sin tiempo de inactividad. De esta forma, usted obtiene una experiencia uniforme en diversas ubicaciones, desde los centros de datos hasta la nube y los extremos.
Ansible es una opción para automatizar la TI sin agentes y de forma sencilla y se destaca por su facilidad de uso y su gran comunidad de usuarios.
Informe de IDC: Ansible Automation Platform ofrece valor empresarial
De acuerdo con las investigaciones de IDC, las empresas que estandarizan sus operaciones con Ansible Automation Platform logran grandes mejoras en la eficiencia operativa de la TI, así como su velocidad y capacidad de ajuste, que se traducen en beneficios en promedio anual de USD 14,81 millones y un retorno sobre la inversión de 668 % en un período de tres años.