¿Qué son los Roles de Ansible y para qué sirven?

| Última modificación: 22 de julio de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Los roles de Ansible son una herramienta que se encarga de la gestión de la configuración de un grupo de tareas de administración en los diferentes servidores web y que sonhe fácilmente asignable a los grupos de hosts. Además, es el método principal para para dividir un playbook en varios archivos, lo que facilita su reutilización. Funciona como un equivalente a una librería, debido a que se trata de una serie de tareas comunes en un rol, que después puede ser reutilizado por muchos otros playbooks.

El día de hoy te ayudaremos a dar tus primeros pasos en Ansible y te mostraremos qué son los roles de Ansible y cuál es su utilidad en el mundo DevOps.

roles de Ansible

Introducción: ¿Qué es Ansible?

Ansible es una herramienta de automatización de TI que facilita la gestión de configuraciones, el aprovisionamiento y el despliegue de aplicaciones. Su arquitectura sin agentes y su lenguaje de configuración basado en YAML lo hacen accesible y fácil de usar.

Ansible se comunica con los nodos a través de SSH (o WinRM para Windows) y utiliza Playbooks, que son archivos escritos en YAML, para definir el estado deseado del sistema.

Roles de Ansible

Los roles de Ansible son una herramienta que se encarga de la gestión de la configuración de un grupo de tareas de administración en los diferentes servidores web y que son fácilmente asignables a los grupos de hosts. Además, es el método principal para dividir un playbook en varios archivos, lo que facilita su reutilización. Funcionan como una librería, debido a que se trata de una serie de tareas comunes en un rol, que después pueden ser reutilizadas por muchos otros playbooks.

Características de los roles de Ansible

Los roles de Ansible se caracterizan por estar limitados a una funcionalidad específica o un determinado resultado, lo que incluye los pasos necesarios para obtenerlo, ya sea dentro de ese mismo rol o de otros roles llamados dependencias.

🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴

Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semana

Aunque esta herramienta Ansible puede ser ejecutada de manera independiente, no existe una forma directa de ponerla en funcionamiento, sino que solo se puede poner en práctica dentro de un Ansible playbook. Además, no cuenta con una configuración detallada para el host en el que se aplicará.

Otra de sus características es que se definen mediante archivos del formato de serialización de datos YAML con una estructura de directorio predefinida.

Estructura de los roles de Ansible

Los roles de Ansible cuentan con un diseño estructurado de sistemas de archivos y tienen una arquitectura de carpetas que contiene un archivo de tipo main.yml con el contenido más relevante de cada clasificación y que permite la inclusión de otros archivos diferentes al archivo principal. Algunas de estas carpetas son:

  • Default: Contiene las variables predeterminadas para el rol, por lo que son más fáciles de anular y tienen un nivel de prioridad bajo. Es representada por el archivo roles/x/defaults/main.yml, donde Ansible cumple la función de agregar variables para que sean reproducidas.
  • Vars: Incluye las variables para los roles de Ansible y tienen una prioridad más alta frente a las variables ubicadas en el directorio predeterminado. Se identifican con el archivo roles/x/vars/main.yml.
  • Tasks: Hace referencia a la lista principal de los pasos que serán ejecutados por un rol específico. Incluye el archivo roles/x/tasks/main.yml, donde Ansible puede agregar tareas al play.
  • Files: Incluye los archivos que el usuario quiere copiar en el host remoto. Para este directorio, no es necesario que se especifique una ruta de recursos almacenados. Incluye el archivo roles/x/{files,templates,tasks}/.
  • Handlers: Se refiere a las tareas que se ejecutarán después de notificarse en otra labor reportando un cambio.
  • Templates: Hace referencia a la plantilla de archivos que permite realizar modificaciones en los roles de Ansible.
  • Meta: Contiene los metadatos del rol, por ejemplo, el autor, las dependencias y las plataformas de soporte. Cuando existe el archivo roles/x/meta/main.yml, Ansible se encarga de agregar las dependencias a la lista de roles.

Cómo crear un Rol desde Cero

Para crear un rol en Ansible, sigue estos pasos:

  1. Crear la estructura de directorios:
ansible-galaxy init mi_rol
  1. Definir variables predeterminadas en defaults/main.yml.
  2. Escribir tareas en tasks/main.yml.
  3. Incluir archivos en files/.
  4. Agregar plantillas en templates/.
  5. Configurar manejadores en handlers/main.yml.
  6. Definir metadatos en meta/main.yml.

Usos de los roles de Ansible

Esta herramienta es utilizada para configurar un gran número de servidores, usando solamente una solicitud de controlador, como ansible playbook roles. Además, también ayuda en la automatización de tareas como el cargue de variables, archivos, controladores, tareas y otros elementos de Ansible Automation Platform, así como la implementación de aplicaciones o creación de canales de CI/CD, entre otros. Los roles de Ansible también ofrecen un marco para las colecciones de variables, plantillas o módulos de tipo independiente o interdependiente.

Integración con distintas herramientas

Integración con CI/CD

Los roles de Ansible pueden integrarse fácilmente en pipelines de CI/CD para automatizar el despliegue de aplicaciones y la configuración de infraestructura. Usar herramientas como Jenkins o GitLab CI junto con Ansible facilita la entrega continua y la implementación automatizada.

Ansible Vault

Para gestionar datos sensibles como contraseñas y claves dentro de los roles, Ansible ofrece Ansible Vault, que permite encriptar y desencriptar estos datos de manera segura.

Ansible Collections

Las colecciones en Ansible son una forma avanzada de gestionar roles, módulos y plugins en un paquete cohesivo. Facilitan la distribución y reutilización de contenido de automatización.

Ansible Galaxy

Ansible Galaxy es el principal repositorio donde se encuentran disponibles los roles de Ansible que el usuario puede colocar directamente en su playbook para mejorar sus procesos de automatización. Además, esta herramienta clasifica un gran número de roles desarrollados por la comunidad de Ansible en las secciones de base de datos, networking, seguridad, sistema web, nube, paquetes de ansible-playbook role, redes, desarrollo y monitoreo.

Ahora que ya conoces qué son los roles en Ansible y sus características y usos más importantes, como ansible playbook roles o ansible tasks, da el siguiente paso y continúa tu proceso de formación acerca de esta y otras herramientas a través de nuestro DevOps & Cloud Computing Full Stack Bootcamp, donde en menos de 6 meses podrás aprender todo lo necesario para convertirte en un experto en este y otros elementos de Ansible, lo que te permitirá obtener una ventaja frente a tus competidores del sector tecnológico. Además, podrás formarte en metodologías que te permitirán mejorar y agilizar tus procesos de desarrollo tecnológico.

Xoán Mallón

Senior DevOps Engineer en Zscaler & Coordinador del Bootcamp DevOps & Cloud Computing.

Posts más leídos

¡CONVOCATORIA ABIERTA!

DevOps & Cloud Computing

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado