Está en la página 1de 6

Ansible

¿Qué es ansible?

Ansible es un software creado por Michael DeHaan (@laserllama), que automatiza el


aprovisionamiento de software, la gestión de configuraciones y el despliegue de aplicaciones. Está
categorizado como una herramienta de orquestación, muy útil para los administradores de sistema y
DevOps.
En otras palabras, Ansible permite a los DevOps gestionar sus servidores, configuraciones y
aplicaciones de forma sencilla, robusta y paralela.
Ansible gestiona sus diferentes nodos a través de SSH y únicamente requiere Python en el servidor
remoto en el que se vaya a ejecutar para poder utilizarlo. Usa YAML para describir acciones a realizar y
las configuraciones que se deben propagar a los diferentes nodos.
Existen dos versiones de ansible:
 versión openSource
 ansible tower (una version de paga) que nos ofrece algunos beneficios mas.

¿Quiénes usan Ansible actualmente?


Por su simplicidad Ansible es utilizado por muchísimas empresas. Entre ellas:
 Atlassian
 NASA
 Evernote
 Spotify
 Verisign

Arquitectura de Trabajo
En Ansible existen dos tipos de servidores:
 Controlador: La máquina desde la que comienza la orquestación
 Nodo: Es manejado por el controlador a través de SSH
Compatibilidad e Instalación de Ansible.
La instalación es bastante simple, una vez instalado no encontraras base de datos o algún demonio que
monitorizar o inicializar.
Sólo es necesario instalarlo en una máquina, que actuará como punto central de la aplicación. Cabe
destacar que Ansible no necesita software o herramientas en los nodos donde se ejecute, por lo que el
mantenimiento y actualización de la versión es muy sencilla.
Para instalar ansible actualmente necesitamos una version de phyton de 2.6 en adelante y comunicarse
con ssh, además de un nodo o mas a aprovicionar.
Ansible es compatible casi con todos los sistemas GNU/Linux y en el caso Debían podemos
encontrarlo en su repositorio oficial con el comando apt.
$ sudo apt-get install ansible
Otros sistemas:
Fedora
$ sudo dnf -y install ansible
RedHat
$ sudo yum install ansible

También está disponible para MAC, pero no para Windows, aunque podemos usarlo en máquinas
virtuales. Para consultar acerca de la compatibilidad con otros sistemas operativos podemos visitar la
página oficial en https://pkgs.org/download/ansible

Elemetos de Configuración.

Inventory:
Ansible funciona contra múltiples sistemas en su
infraestructura al mismo tiempo. Hace esto seleccionando
porciones de sistemas enumerados en el inventario de
Ansible, que se guarda por defecto en la ubicación
/etc/ansible/hosts. Puede especificar un archivo de
inventario diferente usando la opción -i <path> en la línea
de comando.

Este inventario no solo es configurable, sino que también puede usar varios archivos de inventario al
mismo tiempo y extraer inventario de fuentes dinámicas o en la nube o de diferentes formatos (YAML,
ini, etc.). también podemos crear grupos de máquinas virtuales y añadir variables al archivo
/etc/ansible/hosts.
Ansible dispone de una gran
cantidad de módulos para las
tareas más habituales podemos
encontrar documentación y el
listado de estas en a página
oficiales

además, podemos programar


nuestros propios módulos en
Python.

Podemos ejecutar estos módulos en la terminal sin ningún problema, pero a veces resulta mejor
trabajar con playbooks ya que podemos reciclarlos y utilizarlos las veces que queramos.

¿Qué son los playbooks?


Son la parte central de ansible, están escritos en YAML, permiten describir las configuraciones a aplicar
en las maquinas, este viene escrito de una manera declarativa y es bastante fácil de leer y lo podemos
ejecutar las veces que se deseen sin temor a que se vuelvan a ejecutar acciones que ya se han
ejecutado.

Así se ve un playbook.

Los playbooks vienen con una cabecera indicando el host a aprovisionar, además está organizado por
tareas o “Tasks” en las cuales podemos declarar ciertos atributos como:
name: donde colocamos el nombre a la tarea a realizar este puede contener cualquier texto
(modulo): donde se coloca el tipo de modulo a ocupar, además de colocar el estado del módulo y
demás configuraciones.
Un ejemplo sencillo de un playbook que instala el editor de texto vim es el siguiente:
Ventajas de Ansible:
 Pretende ser:
 Claro: ya que se usa de manera declarativa en archivos YAML.
 Rápido: curva de aprendizaje y configuración.
 Completo: Sin límites
 Eficiente: Sin software extra (sólo ssh).
 Seguro: SSH
 Documentación muy completa. (http://docs.ansible.com/ansible/)
 Soporte oficial Ansible Inc.
 Consultoría y formación oficial.
 Comunidad amplia (ansible-galaxy, FreeNode #ansible,...)

Desventajas de ansible.
 Necesita Python tanto en el controlador como en las maquinas a configurar
 El controlador no puede ser una maquina con sistema Windows
 Al especificarlo todo en YAML hay veces que necesitemos crear nuestro propio módulo, aun que
posee una comunidad muy amplia a veces necesitamos algo demasiado especifico y esto es un
salto a lo desconocido y requiere de mayor tiempo para aprender cómo hacerlo.
 Los archivos YAML no soporta los tabuladores como separadores, lo cual puede llevar a
muchos errores difíciles de encontrar.

Ámbitos de aplicación.

Al trabajar con tecnologías de información es muy común encontrar tareas repetitivas lo que afecta de
manera directa a la productividad, es aquí donde entra en juego la aplicación de la tecnología Ansible
dándole una solución a este problema.

Ansible generalmente se emplea en servidores pero eso no quiere decir que no lo podamos emplear en
nuestras propias maquinas.
Para trabajar con Ansible necesitamos inventariar las maquinas que queremos aprovisionar. Un ejemplo
que hacer eso seria:
En el inventario se asignan los nombres del host o sus direcciones IP, también se pueden hacer
agrupaciones de máquinas por ejemplo en base al rol (base de datos, servidor web, …). Una vez que
disponemos del inventario podemos empezar a usar Ansible, por ejemplo haciendo un ping a todas las
máquinas o instalando un determinado paquete:

por ejemplo para hacer ping a la maquina web1.example.com y verificar que esta esta respondiendo lo
haríamos de la siguiente manera:

$ ansible web1.example.com -m ping

donde -m indica el módulo de Ansible que usamos.

Pero esto no es nada comparado con todas las cosas que podemos hacer con Ansible.

Una de la aplicaciones mas comunes de Ansible es aprovisionar maquinas virtuales alojadas en


servidores remotos ya sean servidores de bases de datos, servidores de paginas web u otros.

A continuación veremos un ejemplo de como aprovisionar maquinas virtuales usando Ansible:

- Configurar el equipo de inventario incluyendo las IPs de dos máquinas

Ponemos en ejecución dos máquinas y obtenemos la dirección IP de cada una

ifconfig
IP_1 172.17.42.117

IP_2 172.17.42.118

Creamos el inventario para poner ambas máquinas bajo el control de Ansible.

-Usamos ansible para hacer ping a ambas máquinas

`ansible all -m ping -u alcasla --ask-pass

- Usamos ansible para instalar apache en ambas máquinas

`ansible all -m command -a 'sudo apt-get install apache2' -u alcasla --ask-pass

- Creamos un "playbook" para Ansible con el que instalar PHP. Aplícalo a ambas máquinas.

-Lo ejecutamos para que se instale en todas las máquinas

ansible-playbook ./playbook.yml -u alcasla --ask-passs --ask-sudo-pass

Y de esta manera nuestras dos maquinas virtuales de ejemplo quedarían aprovisionadas con apache y
PHP. En este ejemplo fueron nada mas dos pero en el área laboral es bastante probable que sean
muchas.
Conclusiones:
Como podemos ver el uso de ansible es bastante amplio lo cual nos permite usarlo en muchas áreas de
la informática, ya sea en áreas de desarrollo o en producción.

También podría gustarte