Este es uno de los capítulos del tutorial Automatización con Ansible. Una introducción.. Encontrarás los enlaces a todos los de capítulos, al final de este artículo.
Ahora que ya mas o menos tienes claro que es esto de Ansible, y las posibilidades que te ofrece. Ahora que ya estás convencido de seguir con este tutorial, ha llegado el momento de instalar Ansible en tu equipo, para empezar a trabajar con todos tus servidores de forma cómoda.
Una de las grandes ventajas que te ofrece Ansible es que no necesitas instalarlo en todos y cada uno de los servidores. Simplemente con instalarlo en tu equipo es mas que suficiente. Eso si, necesitarás acceso vía ssh
a cada uno de los servidores y equipos que quieras gestionar con Ansible.
En este primer capítulo te hablaré sobre los conceptos básicos de Ansible, que como verás son pocos y sencillos. Posteriormente te daré unas indicaciones para que veas como instalar Ansible en Ubuntu, aunque lo puedes hacer de forma similar en cualquier otra distribución Linux, y como configurarlo para poder utilizarlo en siguientes capítulos.
Conceptos básicos de Ansible
Antes de instalar Ansible, te quiero comentar algunos conceptos básicos, que vas a utilizar de forma profusa a lo largo de todo el tutorial. Una vez repasados estos conceptos instalarás Ansible en tu equipo para poder utilizarlo con tus Raspberrys o con tu VPS o con cualquier otro dispositivo.
Nodo de control
El nodo de control es cualquier máquina donde esté instalado Ansible. En mi caso, y tu puedes hacer lo mismo, claro, para este tutorial, voy a utilizar como nodo de control mi propio equipo, y desde el lanzaré tanto comandos ad-hoc como playbooks. Sin embargo, no tiene porque ser tu ordenador, puede ser un servidor de la red que quieres gestionar, o cualquier otro dispositivo que tu consideres, y que evidentemente te permita instalar Ansible, claro.
Desde esta máquina puedes ejecutar comandos y playbooks utilizando ansible
y ansible-playbook
. Es posible utilizar varios dispositivos como nodos de control.
Nodo gestionado
Cualquier máquina o dispositivo gestionado con Ansible. Los nodos gestionados también se conocen como hosts. En los nodos gestionados no está instalado Ansible.
Inventario
El inventario es un listado de hosts, de nodos gestionados. En ocasiones al inventario, también se le conoce como hostfile.
El inventario contiene información específica sobre cada host. Información como puede ser la IP. En el inventario, puedes organizar los nodos en grupos, de forma que sea mas sencillo trabajar con los diferentes host.
Aunque, le dedicaré un capítulo completo a esto del inventario, para ir abriendo boca, esta podría ser la configuración de tu inventario, /etc/ansible/hosts
definida en formato yaml
que comentaré en el próximo capítulo del tutorial,
all:
children:
vps01:
hosts:
io01:
ansible_host: 98.192.48.122
ansible_user: atareao
ansible_private_key_file: /home/lorenzo/.ssh/ata.pem
ansible_port: 4422
vps02:
hosts:
do01:
ansible_host: 124.122.92.111
ansible_user: atareao
ansible_private_key_file: /home/lorenzo/.ssh/id_rsa.pub
ansible_port: 2234
vps03:
hosts:
co01:
ansible_host: 197.45.133.214
ansible_user: atareao
ansible_private_key_file: /home/lorenzo/.ssh/id_rsa.pub
ansible_port: 1243
Módulos
Un módulo de Ansible no es mas que una librería donde encontrarás las funcionalidades necesarias para desempeñar diferentes tareas. Existen gran cantidad de módulos. Algunos de estos módulos están incluidos en el propio sistema, otros módulos extras o adicionales no incluidos en el núcleo, y por último, siempre puedes desarrollar tus propios módulos.
Aunque dedicaré un capítulo completo a los módulos, no quiero dejar pasar la oportunidad de comentarte algunos, mas que nada para que tengas una idea del potencial que tiene Ansible.
Así, por ejemplo, si quisieras saber, cual de los anteriores hosts responden a ping
, tan solo tienes ejecutar la siguiente instrucción,
ansible -i inventory -m ping all
También puedes ejecutar comandos en cada una de las máquinas del inventario. Por ejemplo, si quisieras conocer el hostname, de cada una de las máquinas, simplemente ejecuta la siguiente instrucción,
ansible -i inventory -m shell -a "hostname" all
Si lo que quieres es conocer si existe el usuario ansible
, en cada uno de los hosts del inventario, simplemente ejecuta,
ansible -i inventory -m user -a "name=ansible" all
También puedes gestionar servicios utilizando Ansible. Por ejemplo, para asegurarte que un servicio está iniciado, por ejemplo, Nginx
, ejecuta la siguiente instrucción,
ansible -i inventory -m service -a "name=nginx state=started" all
Estos solo es la punta del iceberg de todo lo que se puede hacer con Ansible. Solo para que vayas abriendo boca.
Tareas
Una tarea o task no es mas que una acción. Cada una de las instrucciones anteriores es una tarea.
Playbooks
Un playbook es una lista ordenada de tareas, un conjunto de acciones que quieres realizar de forma secuencial y ordenada. Esta lista de tareas se guarda en un archivo con formato yaml.
Además de tasks, un playbook puede contener variables, tal y como verás mas adelante.
Instalar Ansible
Como te he indicado en la introducción, solo necesitas instalar Ansible en un dispositivo, desde el que accederás al resto de equipos y servidores vía ssh
.
Como requisito indispensable para ese equipo en el que instalarás Ansible es que tenga Python 2 o Python 3. Aunque tienes que tener en cuenta, que Python 2, en el momento de escribir este artículo, ya no tiene soporte, con lo que solo te queda la opción de Python 3.
Sea el equipo que sea, en el que instales Ansible, para gestionar el resto de dispositivos, ten en cuenta que debe tener acceso a cada uno de ellos. Quiero decir, que si está en una red concreta, lo mejor es que ese dispositivo se encuentre en esa red.
¿Que version de Ansible instalar?
La primera duda que te puedes plantear, a la hora de instalar Ansible, es ¿que versión instalar?. Puedes elegir cualquiera de estas opciones,
- Desde los repositorios oficiales de la distribución que estés utilizando
- Utilizando,
pip
, el gestor de paquetes de Python. - Desde el código fuente para tener acceso a la versión de desarrollo.
En el momento de escribir este artículo salían de dos a tres versiones al año, de forma que de una versión a otra, se suelen corregir los errores menores. En caso necesario se sacan versiones de mantenimiento, aunque esto es poco habitual.
En el caso de Ubuntu, puedes optar por instalar Ansible desde el PPA, para de esta manera tener a tu disposición la última versión, así como las actualizaciones conforme se vayan liberando. Para esto, ejecuta las siguientes instrucciones en un terminal,
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
Completado
Las herramientas de ayuda del completado en las tienes que instalar con un complemento aparte argcomplete
y posteriormente habilitarlo. Para esto, primero tienes que instalar el paquete,
sudo apt install python3-argcomplete
y el segundo paso es habilitarlo,
sudo activate-global-python-argcomplete3
Conclusión
No tenía claro si contarte primero sobre la instalación, o sobre los conceptos básicos de Ansible. Sin embargo, después de mover ambos apartados, uno delante del otro y el otro delante del uno, creo que he acertado. Si has seguido el capítulo, has visto que los conceptos básicos que vas a manejar con Ansible, son relativamente sencillos. Pero, además, has tenido la oportunidad de ver la potencia de esta herramienta. Todo lo que puedes hacer con una simple y sencilla instrucción. Y, como te he adelantado, esto no es mas que la punta del iceberg. Así que te animo a que continues con el resto del capítulos de este tutorial sobre Ansible.