El abanico de herramientas disponibles en la técnica de desarrollo de software DevOps es cada vez más amplio. Hoy en día, hay miles para elegir, cada herramienta con sus razones para ser utilizada en su negocio: por cómo ayuda a alcanzar sus objetivos o incluso las tareas diarias. Y tanto si es usted un desarrollador nuevo como experimentado, es posible que se sienta abrumado en la carrera por encontrar la opción adecuada.
Incluso una vez que lo haya reducido a una lista de herramientas potenciales (las que le interesan), el tipo de problemas que resolvería es diverso. Por ejemplo, podría desear una gestión específica de la configuración o el despliegue de aplicaciones en la infraestructura de las tecnologías de la información (TI), por lo que elegir es difícil. Chef y Ansible son las herramientas líderes hasta el momento.
Si se dedica a DevOps, necesita entender cuándo elegir una pila tecnológica de automatización concreta y por qué. En este post, desglosaré las dos herramientas de automatización, teniendo en cuenta que cada desarrollador tendrá necesidades únicas. Y aunque la «mejor» herramienta es subjetiva, le mostraré las diferencias, mencionaré los atributos comunes y le ayudaré así a tomar una decisión informada.
Términos de automatización DevOps que debe conocer
Antes de zambullirnos de lleno en el asunto entre Ansible y Chef, valdría la pena conocer los términos más utilizados en la automatización de DevOps para tener una comprensión fluida del dominio.
- DevOps y DevSecOps – Los términos hacen referencia a las operaciones de desarrollo y a las operaciones de seguridad del desarrollo, respectivamente. Estas técnicas de desarrollo de software conllevan enfoques de cultura, automatización y diseño de plataformas con una intersección de seguridad integrada como responsabilidad compartida en todo el ciclo de vida de TI. Aunque tanto DevOps como DevSecOps son similares, la adición de la seguridad a DevOps da lugar a DevSecOps, para aclarar las cosas.
- Gestión de la configuración – Este proceso implica mantener los sistemas informáticos, los servidores y el software completo en un estado deseado. Este enfoque de la gestión del software asegura que su software funciona como se espera. Si puede automatizar la gestión de la configuración, reducirá los costes, la complejidad y el riesgo ligado a los errores manuales.
- Arquitectura basada en agentes – Chef utiliza este criterio. Describe un modelo y una infraestructura de automatización que utiliza un software específico, denominado agentes, para ejecutarse en entornos gestionados. Para empezar a utilizar el modelo, debe instalar dependencias en cada nodo de destino con comprobaciones y reglas de seguridad adicionales, lo que puede llevar mucho tiempo, especialmente cuando se entrega software en un periodo limitado.
- Arquitectura sin agentes – Utilizado por Ansible, este criterio implica automatizar y gestionar los servicios informáticos sin necesidad de agentes. El software de control no requiere largas instalaciones y se conecta a máquinas remotas a través de un shell de socket seguro (SSH). Una vez configurado el sistema, no es necesario mantener un sistema de despliegue; hablaremos de ello más adelante.
- YAML – En su totalidad, Yet Another Markup Language, ocasionalmente, Yet Ain’t Markup Language, es el lenguaje de deserialización utilizado para escribir archivos de configuración. YAML es un superconjunto de JavaScript. Es legible por humanos y fácil de utilizar junto con otros lenguajes de programación.
¿Qué es Ansible?
Ansible es una herramienta de automatización de TI acuñada en 2012 por Ansible Works, su empresa matriz, para automatizar todo el ciclo de vida de una aplicación en entornos de TI. Ansible ayuda a automatizar la gestión de la configuración, orquestar los flujos de trabajo y el desarrollo de aplicaciones; la lista es larga. El modelo de funcionamiento de Ansible ejecuta las tareas en un orden determinado, uno propio, ejecutando los procesos del entorno de TI de forma coherente.
Ansible aumenta la calidad y la productividad a la vez que reduce los costes optimizando el entorno de TI. También puede ser una solución que introduzca la inteligencia en el ámbito informático. Ansible tiende un puente entre los entornos de TI tradicionales y la implementación ágil de software. Es de código abierto y se basa en el modelo cliente-servidor. Los diseñadores de Ansible afirman que es el único motor de automatización que robotiza todo el ciclo de vida del APK dentro de una línea de tiempo de entrega continua. La automatización consiste en convertir tareas complejas en playbooks repetibles, simplificando los procesos y, finalmente, acelerando la producción.
Como era de esperar, el nombre «ansible» procede de la literatura de ciencia ficción. Describe un sistema de comunicación hiperespacial instantáneo.
Las máquinas de control de Ansible están basadas en Linux/Unix, como Debian, RedHat Enterprise Linux y macOS. Puede ejecutar Ansible con Python 2.7 o 3.5. Ansible utiliza winRM y OpenSSH para las conexiones remotas y ofrece multitud de módulos incorporados. Como resultado, Ansible proporciona fiabilidad y seguridad en DevOps y operaciones de TI.
Ansible puede ser aprovechado para automatizar la infraestructura de TI por muchos operadores del sector, incluidos operadores, ejecutivos de TI, gestores e ingenieros de lanzamiento. Ahora que he vinculado Ansible a sus usuarios, ¿qué ocurre con las organizaciones? Tanto si dirige empresas grandes como pequeñas, puede adoptar Ansible para agilizar sus operaciones de TI. Sin embargo, muchas de las empresas que utilizan Ansible se adaptan a los ámbitos de las tecnologías de la información y las comunicaciones.
Características principales de Ansible
- Colecciones de contenidos de Ansible – Esta herramienta le ayuda a la hora de crear una comunidad de usuarios sólida. Ansible lleva incorporados módulos precompuestos que ayudan a los desarrolladores y creadores de contenidos a colaborar en el trabajo de forma eficaz. Ansible proporciona una estructura consistente a través de la cual puede mover paquetes de módulos, roles, plugins y documentación en su proceso de creación de contenidos. La parte fantástica es que siempre puede garantizar un rendimiento consistente en el contenido sin preocuparse de las actualizaciones de versiones y lanzamientos.
- Catálogo de servicios de automatización: es la función que se encarga del aprovisionamiento, la gestión y la automatización completa de los recursos. A la vez que automatiza las solicitudes frecuentes de los usuarios mediante la técnica RBAC mencionada anteriormente, también ayuda a cumplir los requisitos de conformidad de TI.
- Automation Hub – Esta herramienta ofrece acceso para encontrar y utilizar el contenido de Red Hat y sus socios asociados. Puede ampliar su contenido publicando y gestionando colecciones Ansible en el Hub de automatización. En particular, las «guías prácticas» que le ayuden a aprovechar Ansible.
- Entornos de ejecución de automatización – Normalmente, se trata de una imagen de contenedor sobre la que se construyen los entornos de automatización de TI. Es el medio para automatizar sus tareas y procedimientos de forma estándar. Desde el punto de vista del desarrollador, puede verlo como un lenguaje común para ingenieros de automatización, arquitectos de plataformas y administradores.
- Malla de automa tización – Esta capa simplifica el proceso de escalado utilizando una capa de comunicación bilateral. La herramienta agiliza la flexibilidad en el despliegue de aplicaciones al tiempo que presta especial atención a no comprometer la visibilidad y el control sobre su ecosistema informático. La malla de automatización proporciona funciones de seguridad como la firma digital, la seguridad de la capa de transporte (TLS), el cifrado del tráfico y controles de acceso adicionales.
- Automation Analytics and Insights – Esta parte le ayuda a evaluar el rendimiento de la automatización de Ansible. En otras palabras, es su puerta de entrada a la comprobación de la salud de su automatización derivada de datos procesables que puede utilizar para tomar decisiones lógicas e informadas.
Ventajas de Ansible
- Fácil de aprender. No necesita ningún requisito previo.
- Gestión de la configuración y despliegue de aplicaciones simplificados.
- Seguridad y fiabilidad mejoradas.
- Cuadro de mandos centralizado de automatización y visualización disponible.
- Admite el cumplimiento de la normativa de TI.
- Eficaz en el tiempo.
- Permite la integración continua.
- Comunidad más amplia
Desventajas de Ansible
- Interfaz gráfica de usuario (GUI) poco desarrollada
- Sin estado y, por tanto, no realiza un seguimiento de los cambios en las dependencias.
- Capacidad de depuración no deseada.
¿Qué es Chef?
Chef fue acuñado en 2009 por su empresa matriz OpsCode. La tecnología Chef es un software sucesor de una antigua herramienta de configuración llamada Puppet que era difícil de entender y tenía una curva de aprendizaje muy pronunciada. Chef es un poco más difícil de entender, a diferencia de Ansible. Pero, con la práctica, se hace fácil, como con cualquier lenguaje de programación. Chef y Puppet se basan en el lenguaje de programación Ruby.
«Chef es una potente plataforma de automatización que convierte la infraestructura en código…»
– Diseñadores de Chef
Así pues, Chef es otra herramienta de automatización que exhibe proezas en el despliegue continuo y la gestión de la configuración. Y tanto si sus operaciones son locales, en un entorno híbrido o basadas en la nube, Chef automatiza la configuración, el despliegue y la gestión a través de su red independientemente de su tamaño.
Chef funciona en múltiples plataformas como Windows, Cisco IO y Nexus. Y si usted es el tipo de desarrollador entusiasta de la tecnología en la nube, Chef es compatible con plataformas como Microsoft Azure, Amazon Web Services (AWS) y Google Cloud Platform. La lista va más allá; investigue para confirmar que su proveedor de nube preferido es compatible.
A diferencia de Ansible, que muchos usuarios utilizan, Chef está orientado explícitamente a los ingenieros DevOps y DevSecOps. La solución es inherentemente adoptada por empresas de tecnología de la información y servicios de nivel medio a superior.
Características clave de Chef
Las soluciones Chef tienen muchas características arquitectónicas vitales; he aquí un desglose.
- ChefInfra – Esta herramienta le permite automatizar, configurar, gestionar y desplegar su infraestructura de TI de forma eficiente. Chef Infra convierte la infraestructura en código y proporciona un despliegue estable a través de él. Chef Infra consta de tres componentes: el servidor Chef, la estación de trabajo y los clientes. Como pieza clave, la estación de trabajo se ejecuta en cualquier plataforma y admite pruebas de código mediante diversas herramientas.
- ChefHabitat – Como producto de código abierto, esta herramienta soporta el despliegue de aplicaciones independientemente de su plataforma. Define, empaqueta y entrega aplicaciones automáticamente si se tienen en cuenta sus componentes constituyentes, los formatos de empaquetado que suelen ser aislados, auditables e inmutables, y un supervisor de hábitat para gestionar estos paquetes.
- Chef InSpec – Este marco de pruebas de código abierto funciona en cualquier plataforma. El marco es legible tanto para humanos como para máquinas. También es una solución que mejora la seguridad y el cumplimiento. Una ventaja adicional es que puede utilizarlo para probar su hardware físico.
- Chef Automate – Esta es su puerta de entrada a la integración de productos de código abierto como Chef InSpec y Habitat. Proporciona seguridad y conformidad continuas full-stack. También puede utilizar Chef Automate para ver todo su ecosistema de TI y generar perspectivas que le resulten útiles.
Ventajas de Chef
- Plantillas preempaquetadas que simplifican la configuración.
- Fácil de usar; desarrolla libros de cocina rápidamente.
- Asegura la coherencia y la calidad en el despliegue.
- Buena personalización de la herramienta; personalice su cuadro de mandos para adaptarlo a sus necesidades.
- No se puede migrar Chef fácilmente.
- Automatiza los cumplimientos de TI.
- Proporciona una entrega segura y sin problemas a las aplicaciones críticas.
Desventajas de Chef
- Muchas herramientas necesitan aclaración entre los usuarios.
- Necesita que entienda el lenguaje de programación Ruby.
- Curva de aprendizaje pronunciada.
- No es lo mejor para microorganizaciones.
- Sigue el enfoque maestro-cliente, lo que lo hace lento.
- Costes relativamente más elevados.
Diferencias clave entre Ansible y Chef
Aunque tanto Ansible como Chef están en la misma página en lo que respecta a la automatización, tienen características que los distinguen. Esta sección destaca las diferencias entre Ansible y Chef.
Característica | Ansible | Chef |
Instalación | Fácil de instalar porque utiliza una arquitectura sin agente. | Utiliza el criterio maestro-cliente que necesita que el agente Chef se ejecute en cada máquina cliente. El componente de estación de trabajo de Chef también necesita configuración, lo que ralentiza su proceso general de instalación. |
Lenguaje utilizado | Ansible está escrito en Python y utiliza YAML para su configuración. | Está ligado a su lenguaje nativo, Ruby, que está más basado en el desarrollador. |
Configuración | Los archivos de configuración en Ansible se denominan playbooks. Ansible utiliza el modelo de operación de configuración push. | Los archivos de configuración en Chef se denominan cookbooks. Chef aplica la técnica de configuración pull. |
Comunidad (Diversas operaciones que no se limitan a meetups, presencia en medios sociales, libros y formación) | Producto nuevo y relativamente menos que aprender. Cuenta con una gran comunidad. | Chef es un producto más antiguo, por lo que su documentación es mejor. Comunidad relativamente más pequeña. |
Poniéndolo todo junto
Como ha visto, Chef y Ansible son los sistemas de automatización y configuración más prolíficos que rigen los procesos de DevOps, DevSecOps y otros procesos de TI. Ansible es sencillo y fácil de usar y puede ser aprendido por muchos usuarios. Por el contrario, Chef viene con numerosas funciones y ayuda a realizar operaciones informáticas complejas.
También ha visto las ventajas y limitaciones tanto de Ansible como de Chef. Para elegir su solución de automatización, debe evaluar sus requisitos. Y mientras se cumplen sus requisitos, hay otros factores a tener en cuenta desde el punto de vista de la comodidad; las funciones actuales disponibles en la solución elegida y las perspectivas a largo plazo. Considere otros factores como la carga de trabajo futura o el crecimiento del tamaño de su organización a lo largo del tiempo.
Si ha llegado hasta aquí, DevOps ha despertado su interés. Si es así, le sugiero que siga adelante con su elección de carrera o con sus pensamientos; por eso debería consultar nuestra guía, que nuestros expertos han elaborado cuidadosamente sobre los mejores cursos de DevOps.