Si te dedicas a la informática, seguro que cada vez oyes hablar más de Ansible. Los CIO lo llaman el "niño mimado" de los DevOps para automatizar tareas de software.
StackShare cuenta con más de 1700 empresas que utilizan Ansible, entre ellas Revolut, Zalando y organismos públicos como la NASA. Entonces, ¿qué es Ansible y por qué ha ganado popularidad tan rápidamente?
¿Qué es Ansible?
Ansible es una plataforma de automatización (automation platform) soportada por Red Hat. Permite configurar sistemas, desplegar software y ejecutar tareas de informática más avanzadas, como despliegues continuos o actualizaciones permanentes sin tiempo de inactividad. También puede abastecer máquinas virtuales, contenedores y la red, así como infraestructuras de informática en la nube completas.
Por tanto, Ansible está abierto a todo tipo de usuarios, ya sean desarrolladores, administradores de sistemas, Data Engineers o responsables informáticos. Además, se integra con Docker, Kubernetes, Microsoft Azure, Google Compute Engine, Datadog y muchas otras herramientas.
El resultado práctico es una importante contribución al movimiento «infrastructure as code« en informática: la idea de que el mantenimiento de la infraestructura de servidores y clientes puede y debe tratarse del mismo modo que el desarrollo de software, con repositorios de soluciones autodocumentadas, probadas y ejecutables que pueden mantener una empresa en funcionamiento independientemente de los cambios de personal.
¿Cómo funciona Ansible?
Existen dos categorías de ordenadores en Ansible: el nodo de control (control node) y los nodos gestionados (managed nodes). El control node es un ordenador que ejecuta Ansible. Debe haber al menos un control node, aunque también puede haber un control node de respaldo. Un managed node es cualquier dispositivo gestionado por el control node.
Ansible funciona conectándose a nodes (clientes, servidores u otros nodos) en una red, y luego enviando un pequeño programa llamado módulo Ansible a ese node. Ansible ejecuta estos módulos a través de SSH y los borra al terminar. El único requisito para esta interacción es que el control node de Ansible tenga acceso a los managed nodes. Las claves SSH son la forma más común de proporcionar acceso, pero también se admiten otras formas de autentificación.
¿Cómo se utiliza Ansible?
El uso de Ansible parece complejo a primera vista, pero esta complejidad es manejada por Ansible, no por el usuario.
Un módulo Ansible se escribe para representar un estado deseado de un sistema, lo que significa que cada módulo define lo que debería ser cierto en un managed node específico.
Por ejemplo, si un administrador de sistemas decide que todos los puestos de trabajo de una empresa deben tener instalada la última versión de un software, el módulo Ansible debe determinar si cada node tiene esa versión de software. Si Ansible encuentra un managed node con el software instalado, detecta el sistema operativo y ejecuta la rutina necesaria para lanzar las actualizaciones. De esta manera, todos los puestos de trabajo de una empresa pueden actualizarse automáticamente con estos módulos de Ansible desde un sencillo panel de control.
Si necesitas automatizar una tarea en varios ordenadores, la biblioteca de módulos de Ansible te permitirá encontrar el que se encarga de la tarea que quieres ejecutar. Si eres programador, también puedes escribir tus propios módulos personalizados para efectuar tareas especializadas, y si tu módulo es útil en general, también puedes enviarlo al proyecto Ansible, un proyecto de código abierto que ya cuenta con más de 3500 colaboradores para que otros puedan beneficiarse de tu trabajo.
¿Cómo se implementan los módulos de Ansible?
Aunque los módulos proporcionan los medios para realizar una tarea, la forma de utilizarlos es a través de un Playbook de Ansible.
Un Playbook de Ansible es un archivo de configuración escrito en YAML, un lenguaje de programación sencillo, que proporciona instrucciones sobre lo que hay que hacer para poner un managed node en el estado deseado. Los playbooks de Ansible son en realidad la clave de la popularidad de Ansible, ya que describen tareas que deben realizarse rápidamente sin necesidad de que el usuario sepa una sintaxis concreta.
Los Playbooks de Ansible no solo puede definir configuraciones, sino que también pueden coordinar los pasos de cualquier tarea ordenada manualmente y ejecutar tareas al mismo tiempo o en momentos diferentes.
Los Playbooks de Ansible están diseñados para ser sencillos, legibles y autodocumentados. Un Playbook de Ansible puede ejecutarse en un sistema en cualquier momento sin tener un efecto negativo sobre él. Si se ejecuta un Playbook de Ansible en un sistema que ya está correctamente configurado y en el estado deseado, ese sistema debería seguir estando correctamente configurado después de ejecutar el playbook.