Los roles de Ansible

3min

Hemos publicado ya varios post dedicados Ansible, incluido los Servidores Cloud de Arsys. En esta entrega os queremos hablar sobre los roles de Ansible, que son una herramienta básica para la reutilización de las acciones de administración y, también muy importante, para poder compartir contenido basado en Ansible con la comunidad.

En post anteriores comenzamos explicando Qué es Ansible, para a continuación hablar de los primeros pasos con Ansible donde mostrábamos cómo configurar el ordenador que hará de nodo de control para administrar las máquinas mediante conexiones SSH. En la última entrega de esta serie aprendimos qué es un Playbook de Ansible y vimos cómo podemos usarlos para ejecutar todo tipo de acciones de administración remota de servidores.

Índice

Qué son los roles de Ansible

Los roles de Ansible son una herramienta para la configuración de tareas de administración en servidores, que se pueden parametrizar fácilmente y ejecutar en diversas situaciones. Los roles permiten a los administradores crear archivos de variables, tareas, manejadores y otra serie de elementos que Ansible nos ofrece para administrar remotamente los servidores. Gracias a los roles los usuarios de Ansible pueden agrupar elementos de configuración y tareas en una estructura definida, que luego se puede reutilizar fácilmente y compartir con otros usuarios de Ansible.

Los roles tienen una arquitectura de carpetas determinada por el propio Ansible, que encontramos completamente detallada en la documentación de Ansible. Entre otras, encontraremos las siguientes carpetas:

  • tasks
  • handlers
  • library
  • files
  • templates
  • vars
  • defaults

En cada carpeta Ansible espera un archivo llamado main.yml donde se expresan los contenidos de cada clasificación. Por ejemplo en la ruta tasks/main.yml encontraremos la lista principal de tareas que este rol ejecuta. En vars/main.yml encontraremos la lista de variables que son necesarias para la ejecución del rol, siendo defaults/main.yml los valores por defecto, que tendrán menor prioridad con respecto a los indicados en la carpeta «vars». Por supuesto, aparte del archivo main, en cada carpeta podemos incluir más declaraciones de tareas, manejadores, variables, etc. Mediante la declaración de «import» podremos cargar esos archivos adicionales desde el main.

Usar los roles de Ansible

Es posible usar roles de diversas maneras. Es tan sencillo como indicarlos dentro de un playbook de Ansible que estés declarando. Incluso podemos pasar variables a los roles, como puedes ver en el código siguiente:

---

- hosts: dbservers

  roles:

    - backupdbs

    - otro_role

      vars:

        dir: '/usr/foo'

        port: 3333

El uso de roles incluye muchas particularidades extra y posibilidades que puedes explorar en la página de documentación mencionada.

Dónde encontrar roles de Ansible

Como hemos dicho, una de las ventajas de los roles es que se pueden reutilizar y compartir con la comunidad. De este modo, es posible encontrar roles de Ansible creados por otros usuarios y aplicarlos en nuestra infraestructura.

El principal sitio donde encontrar roles de Ansible es Galaxy. Se trata de una página donde se clasifican cientos de roles creados por la comunidad de Ansible. El contenido que podremos encontrar aquí se encuentra clasificado en diversas áreas como sistema, web, seguridad, database, networking, etc. Además de roles, en Ansible Galaxy encontramos colecciones, que no son más que agrupaciones de roles, playbooks y otros módulos sobre un tema en concreto. Digamos que es una forma común en la que encontrarás que se distribuye el contenido para Ansible. Una vez que encontramos el rol o la colección que nos interesa, podemos observar sus características y documentación en una página específica.

Dónde encontrar roles Ansible

Gracias a los roles publicados por otras personas podemos ahorrar mucho tiempo de configuración, pero todavía más importante, podremos aprender muchas cosas examinando el trabajo de otras personas y observando cómo sacar el máximo provecho de Ansible en el día a día de la administración de sistemas.

Manuel León

Productos relacionados: