¿Qué es Ansible?

Ansible es una herramienta para administración de servidores con la que podemos realizar la orquestación de cualquier número de máquinas. Permite realizar el aprovisionamiento de servidores y su personalización, realizando cualquier tipo de tarea de instalación de software adicional que se necesite en las máquinas, la configuración de los servicios y el despliegue de aplicaciones.

Ansible es de código abierto y permite trabajar con una larga lista de proveedores cloud, incluido Arsys. Mediante la herramienta cualquier persona puede realizar la instalación de cualquier servicio usando un lenguaje declarativo, fácil de mantener y de reutilizar.

Sin una herramienta como Ansible, al aprovisionar un servidor sería necesario instalar a mano todo el software necesario en la máquina, como el servidor web, usuarios, bases de datos, firewall. Para ello habría que entrar en el servidor y realizar todo el proceso manualmente, por medio de comandos de consola. Mediante Ansible podemos especificar por medio de código qué necesitamos tener en una máquina y, dada una configuración, aplicarla las veces que haga falta y de manera automatizada, permitiendo aumentar sensiblemente la productividad de los profesionales DevOps.

Sin necesidad de instalación de agente

Para realizar los procedimientos de administración, Ansible se conecta por protocolos ampliamente extendidos en servidores, como SSH. Por medio de SSH los módulos de Ansible para la realización de tareas son transferidos al servidor, colocándose en una carpeta temporal, donde se ejecutan para realizar las tareas necesarias. Una vez realizado el proceso, los módulos devuelven su salida en formato JSON al ordenador central y se borran de la carpeta temporal del servidor.

La característica principal de Ansible es que puede hacer todas estas tareas sin necesidad de un agente en el servidor, lo que se conoce bajo el término «agentless». Esto lo hace diferente a otros sistemas de aprovisionamiento y administración de servidores, ya que permite administrar cualquier servidor sin mayores requisitos, aparte del acceso por SSH a la máquina administrada.

Para trabajar con Ansible necesitaremos haberlo instalado en el ordenador central, generalmente la estación de trabajo del profesional DevOps. En los servidores administrados no requerimos nada en especial, simplemente el lenguaje Python que está presente de manera predeterminada en la mayoría de los sistemas.

Ansible permite un lenguaje declarativo

Para entender bien qué es Ansible y apreciar las diferencias con otros sistemas de administración automatizada, como podrían ser los scripts Shell, debemos tener en cuenta su carácter declarativo.

  • Mientras que en scripts shells necesitaríamos especificar, comando a comando, qué acciones precisas se desean ejecutar sobre la máquina, en Ansible se indica qué estado debería tener la máquina una vez realizadas las tareas de aprovisionamiento.
  • En scripts shell tendríamos por tanto que realizar los comandos con el gestor de paquetes correspondiente (Yum / Apt) para la instalación de los programas necesarios, seguido de los comandos para dejar los servicios totalmente configurados. Con Ansible diremos que tales programas deberían estar instalados, con determinados usuarios y configuraciones. Los módulos correspondientes de Ansible serán los encargados de decidir qué comandos se necesitan ejecutar en la máquina de destino.

Ansible se encargará además de realizar todas las comprobaciones necesarias para asegurar que las acciones se realizan, como por ejemplo solucionar posibles errores de instalación, verificar si ciertos paquetes ya están instalados antes de realizar las configuraciones, etc. En definitiva, gracias a la potencia de Ansible podemos especificar qué acciones se desean realizar mediante un lenguaje claro y estándar, fácil de leer y de mantener.

Los módulos de Ansible

Como hemos comentado, Ansible usa los módulos para poder realizar cada una de las tareas especializadas sobre los servidores. La potencia de Ansible reside en la cantidad de módulos que dispone, que permiten hacer casi cualquier tarea imaginable sobre los servidores.

Tenemos módulos para instalación de paquetes, para creación de usuarios, para trabajar con las bases de datos, para instalar herramientas de monitorización, de gestión de red… El conjunto de módulos disponibles se puede encontrar en la documentación, ordenados por categorías en la página Module Index.

Además, si la configuración que necesitas no te la ofrece un módulo en particular, existe un repositorio de contenido para Ansible llamado Galaxy, en el que podemos encontrar declaraciones publicadas por otros desarrolladores, que nos facilitan la realización de tareas tan complejas como podamos imaginar.

Conclusión

En este artículo te hemos explicado qué es Ansible es una herramienta potente capaz de aprovisionar servidores de manera remota y automatizada, que resulta casi un estándar para los profesionales DevOps, ya que tiene soporte transversal en la mayoría de servidores y proveedores cloud. En próximos artículos continuaremos explicando Ansible y ofreciendo informaciones más detalladas sobre cómo comenzar a usarlo.