Banner conmemorativo natalicio Antonio Maceo y Che Guevara.jpg

Ansible

Ansible (Software)
Información sobre la plantilla
Parte de la familia Internet
Ansible 25p.png
Software para aprovisionamiento de equipos remotos
DesarrolladorRed Hat
Plataformas soportadasSistemas UNIXLike
LicenciaGPL3

Ansible. Software de aprovisionamiento de sistemas, desplieque de aplicaciones y servicios, y orquestación para servidores e infraestructura. Es un software de código abierto bajo la licencia GPL3

El problema del aprovisionamiento distribuido

Cuando se instala un sistema operativo nuevo a un equipo (o se reinstala sea por los motivos que sean), se le debe también instalar software adicional en forma de aplicaciones, servicios y otros programas para que el equipo sea funcional, esta labor de instalación y configuración adicional es lo que se le conoce como 'aprovisionamiento'

Lo normal (sobretodo si es un número bajo de equipos) es realizar este aprovisionamiento de forma manual, tanto si es un equipo personal como si es a un número muy escaso y manejable de equipos. Pero cuando ese número de equipos es mayor el proceso de aprovisionamiento se vuelve tedioso y propenso a errores, y es aquí donde hay que considerar qué opciones hay para automatizar el proceso

Hay muchas formas y métodos que han existido a lo largo de los años para automatizar los procesos de aprovisionamiento a gran escala, cualquier persona o empresa puede crear soluciones individuales, pero estas soluciones son a menudo sesgadas o específicas, y es aquí donde entra Ansible a resolver este problema

Características de Ansible

Minimalista

Ansible no requiere la instalación de agentes en los equipos remotos para su funcionamiento

Declarativo

La configuración de Ansible no consiste en decirle que realice una serie de pasos (imperativo) hasta llegar al objetivo, lo que se le hace es declarar un estado y es Ansible el responsable de alcanzar ese estado por su propia cuenta

Extensible

Las capacidades de Ansible son extensibles a través de módulos creados por la comunidad, que van desde la instalación de simples programas hasta creación de usuarios, redes, servicios e infraestructuras enteras

Estructura y funcionamiento

Ansible se compone de un equipo principal o de control, que es el que va a tener instalado a Ansible y uno o más equipos remotos

El equipo de control debe tener una comunicación ya configurada con cada equipo remoto mediante SSH (preferiblemente securizada mediante el uso de claves públicas y privadas y no por contraseña)

Cuando Ansible desde el equipo de control manda a ejecutar órdenes, estas órdenes se envían mediante SSH al equipo remoto (o a todos) y el agente de Ansible es el encargado de ejecutar esas órdenes en el equipo remoto en forma de comandos y la respuesta de estos comandos se envía al equipo de control

Componentes

Inventario

El Inventario es el conjunto de equipos remotos, representados por su IP o por su nombre de dominio

Los equipos en el inventario pueden dividirse en varios grupos para facilitar su administración

Ansible no puede actuar sobre equipos que no existan en el inventario

Tareas

Las Tasks (tareas) son funciones en las cuales se declara un estado, y al ejecutarlas, Ansible debe encargarse de ejecutar serie de órdenes y comandos para llegar a ese estado

Por ejemplo, una Task para instalar el servidor web NGINX y configurarlo, implica que Ansible por su cuenta debe realizar las siguientes acciones:

  • Revisar si NGINX está instalado. En el caso de estarlo, marcar la tarea como completada
  • Instalar NGINX
  • Echar a andar el servicio de NGINX

Es decir, la Task para instalar NGINX no es "instalar NGINX", sino "NGINX debe estar instalado y funcionando"

Las tareas nuevas se obtienen mediante la instalación de módulos

Libro de tareas

Las tareas pueden ejecutarse de forma individual si uno lo desea, pero si se van a ejecutar múltiples tareas, se debe usar un Playbook o libro de tareas.

Un Playbook es un conjunto de tareas a realizar, y según el objetivo del playbook estas tareas pueden ejecutarse de formas específicas basándose en condiciones y resultados de otras tareas

Roles

Los roles son un tipo especial de Playbook hechos para realizar trabajos complejos

Colecciones

Las colecciones son un formato de distribución de playbooks, tareas, roles y módulos que pueden compartirse con otros usuarios

Véase también

Fuentes