En un mundo donde la velocidad lo es todo, los equipos de IT necesitan herramientas que les permitan hacer más, con menos esfuerzo. Ahí es donde entra Red Hat Ansible Automation Platform, una solución integral que permite a las empresas y a los equipos IT automatizar tareas complejas de forma sencilla, sin necesidad de agentes que compliquen el proceso.
En este artículo, vamos a profundizar en qué es Ansible y en cómo transforma la manera en que las organizaciones despliegan aplicaciones, gestionan actualizaciones y realizan todo tipo de configuraciones. Además, exploraremos sus beneficios, cómo funciona, y qué lo convierte en una herramienta imprescindible para cualquier ingeniero de DevOps.
Sigue leyendo y descubre cómo la automatización puede ser tu mejor aliada.
¿Qué es Ansible?
Ansible es una plataforma que ayuda a las organizaciones y a los equipos IT a automatizar tareas en computadoras, servidores o cualquier dispositivo conectado, conocidos técnicamente como nodos o hosts.
Imagina que tienes que configurar muchas computadoras en tu espacio de trabajo: instalar programas, cambiar configuraciones o asegurarte de que todo esté actualizado. Hacer esto manualmente sería una tarea monumental, un proceso lento y aburrido. Ahí es donde entra Ansible.
En lugar de hacer todas estas tareas manualmente, Ansible te permite escribir instrucciones —llamadas Playbooks— en un lenguaje muy fácil de entender. Luego, Ansible sigue esas instrucciones y realiza las tareas en todos tus nodos de manera automática. Para mayor claridad: no tienes que ir dispositivo por dispositivo porque Ansible se encarga de todo al mismo tiempo.
Ansible, sin necesidad de otras instalaciones
Lo mejor de todo es que Ansible no necesita que instales nada en esos dispositivos para funcionar. Es decir, funciona sin agentes, lo que significa que no necesitas instalar software adicional en los nodos. Ansible se conecta a ellos usando SSH (o WinRM en sistemas Windows) y realiza las tareas de manera directa. Esto lo hace muy fácil de usar, sin complicaciones ni necesidad de modificar los sistemas que deseas gestionar.
En resumen, Ansible es como un ayudante que sigue una lista de tareas y las realiza en todos los nodos simultáneamente, de manera rápida y sin complicaciones.
DevOps, explicado
¿Cómo funciona Ansible?
Como ya dijimos, Ansible es una herramienta de automatización que te ayuda a realizar tareas en muchos dispositivos -llamados nodos gestionados o máquinas de destino- de manera eficiente y sin complicaciones.
Pero para entender cómo funciona, es importante conocer algunos términos clave que hacen que todo el proceso sea posible.
1. Nodos de control y nodos gestionados
En Ansible, hay dos tipos de dispositivos importantes. Los nodos de control y los nodos gestinados o nodos clientes.
Los nodos de control son las máquinas donde instalas y ejecutas Ansible. Desde aquí se coordinan las tareas de automatización que Ansible lleva a cabo. Puedes pensar en ellos como los "centros de comando". En tanto, los nodos gestionados son los dispositivos que Ansible va a gestionar o configurar. Estos nodos pueden ser servidores, computadoras o cualquier otro dispositivo. A estos nodos es a los que Ansible envía las instrucciones para realizar las tareas.
El nodo de control se conecta a los nodos gestionados a través de protocolos seguros como SSH (para sistemas Linux) o WinRM (para sistemas Windows) para realizar las tareas correspondientes.
2. Módulos
Los módulos en Ansible son como pequeñas herramientas o scripts que ejecutan tareas específicas en los nodos gestionados. Cada tarea que Ansible realiza en un nodo se ejecuta mediante uno o más módulos. Piensa en los módulos como las "piezas de trabajo" que le dicen a Ansible qué hacer en cada nodo.
Por ejemplo, hay módulos para:
- Instalar software.
- Gestionar usuarios.
- Configurar servicios.
- Manipular archivos.
Cuando Ansible se conecta a un nodo gestionado, usa estos módulos para realizar las tareas que hayas definido. Los módulos son lo que realmente hacen el trabajo en cada nodo.
3. Plays y Playbooks
Un Playbook de Ansible es un archivo donde escribes todas las tareas que quieres que Ansible realice. Este archivo está escrito en un formato muy fácil de entender llamado YAML. El YAML es un formato simple de texto plano que permite escribir las tareas de manera organizada, clara y sin demasiada complejidad.
Dentro del Playbook, las tareas se agrupan en plays. Un play define las tareas que deben realizarse en un grupo de nodos. Cada play tiene una lista de tareas que serán ejecutadas en los nodos gestionados.
Por ejemplo, un Playbook puede tener un play que diga: "Primero, instala el servidor web en estos nodos", y luego otro play que diga: "Ahora, configura el firewall en esos mismos nodos".
4. Yet Another Markup Language (YALM)
Como mencionamos, los Playbooks están escritos en un formato llamado Yet Another Markup Language (YALM), un lenguaje de programación muy sencillo. Este es un formato de texto que es muy legible y fácil de escribir. Lo bueno del YAML es que no necesitas tener experiencia en programación para entenderlo.
Un ejemplo simple de YAML sería algo como esto:
En este ejemplo, estamos diciendo a Ansible que instale el servidor web Apache en todos los nodos que pertenecen al grupo llamado webservers. La instrucción está escrita de manera simple, pero es muy poderosa porque le dice a Ansible exactamente lo que debe hacer en los nodos gestionados.
5. Conexión sin agentes
Uno de los aspectos más convenientes de Ansible es que funciona sin la necesidad de instalar software adicional en los nodos gestionados. Esto se conoce como arquitectura sin agentes.
A diferencia de otras herramientas que requieren la instalación de un agente en cada nodo gestionado, Ansible se conecta directamente a los nodos mediante protocolos seguros como SSH o WinRM. Esto simplifica mucho la gestión de los dispositivos, ya que no necesitas preocuparte por mantener agentes en cada nodo.
6. Flujos de trabajo de Ansible
Los procesos para utilizar Ansible pueden variar de persona a persona, pero en términos generales, se ve de la siguiente manera:
-
Escribes el Playbook: Definir qué tareas quieres que Ansible realice.
-
Define los nodos gestionados: Usas un archivo de inventario para decirle a Ansible en qué nodos realizar las tareas. Por ejemplo, podrías tener un inventario que agrupa los servidores por roles: servidores web, servidores de base de datos, etc.
-
Ansible se conecta a los nodos gestionados: Usando SSH o WinRM, Ansible se conecta a cada nodo en el inventario.
-
Ejecuta los módulos en los nodos: Ansible usa los módulos especificados en el Playbook para realizar las tareas.
-
Verifica el estado: Ansible verifica que las tareas se hayan realizado correctamente. Si algo falla, te notificará para que puedas revisar qué ocurrió.
¿Qué es un ingeniero DevOps?
4 beneficios de la automatización con Ansible
Ansible proporciona a los ingenieros de DevOps una solución integral con cuatro beneficios principales:
-
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.
-
Hace accesible la automatización: uno de los objetivos de Ansible fue que se requiriera un aprendizaje mínimo de uso. Es fácil porque YAML es un lenguaje legible para personas con elementos de otros idiomas de programación.
-
No afecta al rendimiento: no requiere agentes, ni software, ni recursos informáticos que se ejecute o instale en sistemas gestionados.
-
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.
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.
1. Instalación de Ansible en Linux (Ubuntu/Debian)
Para instalar Ansible en sistemas basados en Ubuntu o Debian, sigue estos pasos:
-
Actualiza el sistema: Ejecuta el comando sudo apt update && sudo apt upgrade para asegurarte de que todos los paquetes estén al día.
-
Instala el paquete software-properties-common: Utiliza sudo apt install software-properties-common si aún no lo tienes, para gestionar los repositorios.
-
Agrega el repositorio oficial de Ansible: Usa sudo add-apt-repository --yes --update ppa:ansible/ansible para añadir el repositorio.
-
Instala Ansible: Ejecuta sudo apt install ansible usando APT.
-
Verifica la instalación: Comprueba que Ansible se haya instalado correctamente con el comando ansible --version.
2. Instalación de Ansible en Red Hat Enterprise Linux (RHEL)
Para instalar Ansible en sistemas Red Hat, CentOS o Fedora, sigue estos pasos:
-
Habilita el repositorio EPEL: Usa sudo yum install epel-release para añadir el repositorio EPEL, necesario para obtener Ansible.
-
Actualiza el sistema: Ejecuta sudo yum update para asegurarte de que todos los paquetes estén actualizados.
-
Instala Ansible: Usa sudo yum install ansible en Red Hat y CentOS. En Fedora, puedes utilizar sudo dnf install ansible.
-
Verifica la instalación: Comprueba la versión de Ansible con el comando ansible --version.
Fin del Mantenimiento de Red Hat 7: ¿Hasta qué punto debemos preocuparnos?
3. Instalación de Ansible en Windows
Ansible no se puede ejecutar directamente en Windows, pero puedes utilizar Windows Subsystem for Linux (WSL) para instalarlo en un entorno de Linux dentro de Windows. Aquí están los pasos:
-
Habilita WSL: Abre PowerShell como administrador y ejecuta el comando wsl --install para habilitar WSL.
-
Instala una distribución de Linux: Descarga e instala una distribución de Linux desde la Microsoft Store, como Ubuntu.
-
Configura la distribución: Inicia la distribución desde el menú de inicio y configura tu usuario.
-
Actualiza los paquetes en WSL: Ejecuta sudo apt update && sudo apt upgrade en la terminal de la distribución de Linux para actualizar los paquetes.
-
Instala Ansible: Agrega el repositorio con sudo add-apt-repository --yes --update ppa:ansible/ansible, y luego instala Ansible con sudo apt install ansible.
-
Verifica la instalación: Comprueba la versión de Ansible con ansible --version en WSL.
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.
1. 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.
2. 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.
3. 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.
4. 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
1. ¿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.
2. ¿Cuál es la última versión de Ansible?
Ansible 2.17.3 (12 de agosto de 2024).
3. ¿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.
4. ¿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.