Documentos de Académico
Documentos de Profesional
Documentos de Cultura
¿Qué es ansible?
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
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.
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:
Pero esto no es nada comparado con todas las cosas que podemos hacer con Ansible.
ifconfig
IP_1 172.17.42.117
IP_2 172.17.42.118
- Creamos un "playbook" para Ansible con el que instalar PHP. Aplícalo a ambas máquinas.
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.