Qué es Ansible: la herramienta DevOps para automatizar tareas de IT

Steve Manjaly marzo 24, 2023
- 9 min read

Redhat Ansible es una de las plataformas de automatización más populares en la industria IT. Desde su lanzamiento, se ganó un lugar entre algunas de las mejores herramientas DevOps. Impulsada por una comunidad de código abierto de más de 3550 colaboradores, ocupa más del 50% de la cuota de mercado en el segmento de gestión de la configuración.

En este artículo vamos a explorar más en profundidad Ansible y cómo los profesionales e ingenieros IT lo utilizan para potenciar sus flujos de trabajo. 

Sigue leyendo para obtener más información sobre una de las plataformas de automatización más potentes y populares del mercado. 

¿Qué es Ansible?

Ansible es una plataforma de automatización de código abierto que puede utilizarse para gestionar grandes grupos de sistemas informáticos. Te ayuda a automatizar el despliegue de aplicaciones, la gestión de la configuración, el aprovisionamiento en la nube, la actualización de estaciones de trabajo y servidores, entre otras muchas tareas. 

Si bien funciona en sistemas Windows y Unix y forma parte de la distribución de Fedora, las máquinas utilizadas para ejecutar la automatización -denominadas nodos de control- tienen que tener sistemas Unix/Linux. Es posible usar máquinas Windows, pero con una distribución Windows Subsystem for Linux

Uno de los aspectos más interesantes de Ansible es que funciona sin agentes, a diferencia de la mayoría de las soluciones de gestión de la configuración. No requiere sistemas remotos con un agente o software específico para realizar cambios o ejecutar comandos. 

Beneficios de Ansible

Ansible proporciona a los ingenieros de DevOps cuatro beneficios principales: 

  1. Reduce los recursos necesarios para la gestión IT: los Sysadmins pueden contener cientos o incluso miles de máquinas desde un único punto y de una sola vez. 

  2. Hace accesible la automatización: uno de los objetivos de Ansible fue que se requiriera un aprendizaje mínimo de uso. La plataforma utiliza YAML (Yet Another Markup Language), un lenguaje legible para personas, con elementos de otros idiomas de programación. 

  3. No afecta al rendimiento: no requiere agentes, ni software, ni recursos informáticos que se ejecute o instale en sistemas gestionados. 

  4. Garantiza la coherencia: la plataforma se diseñó para ser mínima y permitir a los usuarios crear entornos coherentes. Además, como toda la operación se realiza a través de una conexión SSH, no añade más complejidad a los sistemas. 

¿Cómo funciona Ansible?

Ansible funciona ejecutando "Módulos" o código en máquinas de destino denominadas nodos gestionados. Una vez ejecutados, los módulos se eliminan de los sistemas de destino. Estos Módulos pueden ser utilizados para cualquier cuestión, desde copiar un archivo a una máquina remota y crear otro comprimido, hasta gestionar interfaces VLAN

Una Tarea, en cambio, es una acción simple aplicada a las máquinas de destino. Las Tareas, que utilizan Módulos para ejecutar una acción en un dispositivo remoto, se agrupan en una lista ordenada en una Play. Esta define qué tareas se aplican a qué máquinas. 

Playbooks de Ansible

Todos los Plays se combinan para formar una Playbook. Aquí es donde los usuarios escriben todo el código de Ansible.  

El playbook de Ansible se ejecuta en un nodo de control. Mientras que los Plays lo hacen en el orden en que están escritos, al igual que las Tareas. Al ejecutar estas últimas, los nodos de control envían los Módulos respectivos a todas las máquinas de destino (nodos gestionados) asignadas a la tarea. 

Los Módulos Ansible o, a su vez, los Playbooks Ansible son generalmente idempotentes. Esto significa que antes de que se ejecute el Módulo, se comprueba si el nodo gestionado ya se encuentra en el estado deseado. Si es así, no se realiza ninguna acción en él.  

Comandos ad hoc de Ansible

Los comandos ad hoc de Ansible son usados para ejecutar un único comando en muchas máquinas diferentes para tareas como reiniciar servidores, gestionar archivos, servicios y paquetes, y recopilar datos. En definitiva, evitan escribir todo un Playbook para ejecutar una pequeña tarea solo una vez. 

Instalación de Ansible en Linux, RedHat y Windows

Antes de instalar Ansible, asegúrate de que tu sistema tiene Python 3.8 o superior. De lo contrario, primero debes instalarlo. 

Cómo instalar Ansible en Linux

Los pasos exactos para instalar Ansible varían según las distintas distribuciones de Linux. En este ejemplo, explicaremos cómo instalar Ansible en Ubuntu. 

Debes ir al terminal y actualizar el gestor de paquetes apt con el siguiente comando:

sudo apt update

En el siguiente paso, introduce el comando:

sudo apt upgrade

Este comando actualiza todos los paquetes y dependencias obsoletas de tu sistema. Verás la siguiente pantalla.

Ahora, pulsa "y", y luego enter. El siguiente paso es instalar algunos prerrequisitos para ejecutar Ansible en tu sistema. Para ello, tenemos que instalar el paquete de software de propiedades comunes. Usa el comando:

sudo apt software-properties-common

Verás una pantalla parecida a esta:

El siguiente comando instala el repositorio de Ansible en tu sistema. 

sudo apt-add-repository --yes --update ppa:ansible/ansible

La pantalla debería tener este aspecto una vez ejecutado el comando: 

El siguiente paso es instalar Ansible. Utiliza el siguiente comando para ello:

sudo apt install ansible

Obtendrás una pantalla parecida a esta:

Pulsa “y”; luego enter: Ansible se instalará. 

Para confirmar la instalación, utiliza el siguiente comando que comprueba la versión de Ansible. Deberías obtener una pantalla parecida a esta.

Cómo instalar Ansible en Windows

Instalar Ansible en Windows es lo mismo que hacerlo en Ubuntu. Pero primero, necesitas contar con Windows Subsystem for Linux (WSL). Esto te permite ejecutar un entorno Linux en tu sistema Windows sin complicaciones de arranque dual. 

Para instalar WSL, abre PowerShell e introduce:

wsl --install

A continuación, sólo tienes que seguir los comandos que aparecen en pantalla. 

Por defecto, Ubuntu está instalado. Se abrirá el Terminal de Ubuntu y te pedirá que configures un nombre de usuario y una contraseña. 

Alternativamente, puedes usar el siguiente comando para instalar una distro Linux específica. El siguiente comando instala Ubuntu:

wls --install -d ubuntu

Para instalar Debian, puedes utilizar el comando que aparece aquí:

wsl --install -d debian

Una vez que hayas añadido tu nombre de usuario y contraseña, el resto de los pasos son iguales a los de la sección anterior. 

Cómo instalar Ansible en RedHat

Para usar Ansible en Redhat, necesitas instalar Python 3. Si bien en la mayoría de los casos las distros Redhat vienen instaladas con Python 3, a veces no es así. 

El siguiente paso es instalar pip con el siguiente comando:

$ sudo dnf install python3-pip

Luego habilita el repositorio del motor de Ansible:

# subscription-manager repos --enable ansible-2.8-for-rhel-8-x86_64-rpms

A continuación, instala Ansible:

# dnf -y install ansible

¿Cómo se utiliza Ansible en DevOps?

DevOps implica acelerar el desarrollo y el despliegue combinando el desarrollo de software y las operaciones IT. Incentiva a los equipos a utilizar la automatización para obtener resultados rápidos. Para ello se utiliza Ansible, una de las herramientas más populares. 

Para DevOps una de las partes fundamentales es CI/CD, aspecto en el que puede ayudar Ansible. Cuando una aplicación se desarrolla localmente, el equipo envía a la nube junto con un Playbook. De este modo funcionará en la nube como lo hacía on-premise.

Ansible trabaja y es posible construir Playbooks en torno a muchas herramientas DevOps estándar como Jira, ServiceNow, Github, Selenium, Jenkins, Containers, Nagios y más. 

Alternativas a Ansible

Aunque Ansible es el líder del mercado en automatización y gestión de la configuración, no es por falta de competencia. Estas son algunas de las principales alternativas a Ansible.

Ansible vs. Puppet

La principal diferencia entre Ansible y Puppet es que el primero no necesita agentes para funcionar, no así el segundo donde tendrás que instalar un cliente en los equipos de destino. Por lo tanto, esto hace que sea más difícil comenzar a usarlo. 

Otra diferencia es que Ansible se basa en YAML, mientras que Puppet utiliza su lenguaje declarativo llamado Puppet DSL. En general, se considera que YAML es más fácil de aprender que Puppet. 

Sin embargo, cuando se trata de la interfaz gráfica de usuario, Puppet resulta mejor, porque Ansible se diseñó inicialmente como una herramienta de línea de comandos. Si bien ahora tiene una GUI más adecuada, no es tan interactiva. 

Ansible vs. Terraform

Tanto Ansible como Terraform no tienen agente; por lo que para utilizarlos no necesitas instalar nada en las máquinas o sistemas de destino. Y por ello, puedes usarlos en PCs virtuales recién creadas. 

Aunque ambos realizan tareas similares, Ansible se considera una herramienta de gestión de la configuración, mientras que Terraform es de orquestación. En síntesis, el primero se centra más en lo esencial de un entorno y en tratar de arreglar todo, en tanto el segundo aborda el panorama general y reemplaza los elementos cuando no funcionan. 

Además, en Terraform los archivos de configuración se escriben en sintaxis HCL (Hashicorp Configuration Language). Su enfoque se describe como declarativo, en contraste con el proceso procedimental de Ansible. 

Ansible vs. Chef

Chef funciona con un sistema maestro-esclavo, con agentes instalados en el sistema de destino; a diferencia de Ansible, que lo hace sin agentes. 

Otra diferencia (menor) entre Ansible y Chef es que en este último los archivos de configuración se denominan Cookbooks, mientras que en el primero se llaman Playbooks. 

Chef también utiliza Ruby DSL, en tanto Ansible usa YAML, el cual como decíamos es más fácil de aprender, ya que el primero está más orientado al desarrollador. 

Ansible vs. Jenkins

Mientras que Ansible es Python, Jenkins está construido sobre Java, lo que confiere una ventaja al segundo. Además, está disponible en casi todos los sistemas operativos, incluidos macOS y Windows. El único requisito es Java. 

Aunque se superponen en la funcionalidad, Jenkins se ve más como una herramienta de integración continua. Y funciona con arquitectura maestro-esclavo.

Puntos clave

Ansible es una de las herramientas de automatización más utilizadas en DevOps. Utiliza archivos de configuración llamados Playbooks, escritos en YAML, que se componen de Plays. Y las Tareas individuales se ejecutan de forma similar por Módulos Ansible, que son códigos binarios para realizar un pequeño paso en las máquinas de destino. 

Hay dos tipos de sistemas o nodos en Ansible: los de control y los gestionados. Cuando se ejecuta un Playbook, los de control envían Módulos a los gestionados a través de una conexión SSH (por defecto). 

Preguntas frecuentes

¿Para qué se utiliza Ansible?

Ansible se utiliza para automatizar operaciones de IT, como el despliegue de aplicaciones, la gestión de configuraciones, el escalado de infraestructuras y otras actividades que implican varias tareas repetitivas. 

¿Cuál es la última versión de Ansible?

Ansible 2.9

¿Cuánto cuesta Ansible?

Red Hat ofrece dos planes para Ansible: Standard y Premium. El primero viene con soporte 8x5, mientras que el segundo proporciona asistencia 24x7. Varias fuentes sugieren una cuota anual de 10.000 dólares para el Standard y 14.000 dólares para el Premium. Ambos planes soportan 100 nodos. 

¿Cómo parchear servidores Linux con Ansible?

Es posible utilizar el módulo YUM para parchear servidores Linux. YUM es un gestor de paquetes con el que puedes instalar, actualizar, degradar, eliminar o listar paquetes.

Read other articles like this : DevOps

Evaluate InvGate as Your ITSM Solution

30-day free trial - No credit card needed