Instalar Ansible. Conceptos básicos y primeros pasos

Automatización con Ansible. Una introducción.Automatización con Ansible. Una introducción.

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.

Ansible. Conceptos básicos, instalación y primeros pasos

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *