Los roles de Ansible: qué son y cómo se utilizan

Copiar URL

Los roles de Ansible® son unidades de automatización independientes y portátiles que se utilizan para agrupar tareas relacionadas y variables, archivos, controladores y otros recursos asociados en una estructura de archivo conocida. Mientras que las tareas de automatización solo pueden escribirse en un playbook de Ansible, los roles permiten crear paquetes con este tipo de contenido que pueden ejecutarse en varios plays, reutilizarse en distintos playbooks y compartirse con otros usuarios.

Los roles de Ansible se escriben en YAML, un lenguaje de serialización de los datos comprensible para las personas que se usa para codificar archivos de configuración. Si uno de ellos forma parte de una tarea o un play, Ansible busca el archivo main.yml en al menos uno de los ocho directorios estándar de roles que aparecen a continuación con su respectiva explicación. Estos incluyen las tareas, los controladores, los módulos, los valores predeterminados, las variables, los archivos, las plantillas y los metadatos de los roles.

roles/
    common/               # this hierarchy represents a "role"
        tasks/            #
            main.yml      #  <-- tasks file can include smaller files if warranted
        handlers/         #
            main.yml      #  <-- handlers file
        templates/        #  <-- files for use with the template resource
            ntp.conf.j2   #  <------- templates end in .j2
        files/            #
            bar.txt       #  <-- files for use with the copy resource
            foo.sh        #  <-- script files for use with the script resource
        vars/             #
            main.yml      #  <-- variables associated with this role
        defaults/         #
            main.yml      #  <-- default lower priority variables for this role
        meta/             #
            main.yml      #  <-- role dependencies
        library/          # roles can also include custom modules
        module_utils/     # roles can also include custom module_utils
        lookup_plugins/   # or other types of plugins, like lookup in this case
    webtier/              # same kind of structure as "common" was above, done for the webtier role
    monitoring/           # ""
    fooapp/               # ""

Para usar los roles de Ansible, deben solicitarse a un playbook, ya sea mediante su registro con la opción de roles o su incorporación a la sección de tareas de roles con los comandos include_role o import_role. Si se registran con la opción de roles o con import_role, se ejecutan antes que el resto de las tareas en el play, pero si se agregan con el comando include_role, entonces se ejecutan en el orden determinado en la lista de tareas.

Tanto los roles como los playbooks de Ansible son herramientas para organizar y ejecutar tareas de automatización, pero cumplen distintos propósitos. Su caso práctico específico y su experiencia con Ansible determinarán si deberá crear roles o escribir todas las tareas en un playbook.

La mayoría de los desarrolladores de automatización y los administradores de sistemas primero generan el contenido con playbooks individuales, los cuales consisten en listas de tareas de automatización que se ejecutan para un inventario específico. Estas tareas pueden agruparse en un play para asignarlas a un host determinado y ejecutarlas en orden. Dado que los playbooks pueden incluir uno o más plays, brindan la flexibilidad para ejecutar la automatización de Ansible en un solo archivo.

Si bien los playbooks son un método eficaz para crear procesos de automatización con Ansible, escribir todas las tareas en uno de ellos no siempre es lo más indicado. Hay casos en los que el alcance y las variables son complejos y conviene reutilizarlos, entonces la opción más indicada es crear el contenido de automatización en los roles de Ansible y solicitarlas al playbook.

En el siguiente ejemplo se muestra el uso de un rol, linux-systemr-roles.timesync, dentro de un playbook. En este caso, se necesitarían más de cuatro tareas para lograr lo mismo que puede hacer un solo rol.

- name: Manage timesync with 3 servers
  hosts: targets
  vars:
     timesync_ntp_servers:
        - hostname: foo.example.com
          iburst: true
        - hostname: bar.example.com
          iburst: true
        - hostname: baz.example.com
          iburst: true
  roles:
     - linux-system-roles.timesync

Utilizar los roles de Ansible, en lugar de escribir todo el contenido de automatización en un único playbook, ofrece varias ventajas:

Reutilización y uso compartido

Los roles son unidades de automatización reutilizables. Dado que permiten separar agrupaciones lógicas de tareas de automatización de un solo play o playbook, pueden reutilizarse en varios de ellos e intercambiarse para formar parte de otros proyectos.

Modularidad

El uso de los roles promueve la automatización modular, en la cual cada uno de ellos se encarga de una parte específica del funcionamiento. Este enfoque simplifica la comprensión, el mantenimiento y la resolución de problemas del código de automatización.

Organización

Los roles de Ansible permiten organizar las tareas, las plantillas, los archivos y las variables de forma estructurada. Gracias a ello, es más sencillo gestionar las configuraciones de automatización complejas, puesto que todo el contenido asociado a un rol en particular se encuentra en el mismo directorio.

Parámetros

Los roles permiten definir variables predeterminadas que pueden sustituirse cuando el rol se usa en un playbook de Ansible. De este modo, no es necesario modificarlo según los distintos entornos o casos prácticos, sino que se puede adaptar con facilidad.

Gestión de las versiones y las dependencias

Es posible crear versiones de los roles y especificar sus dependencias en su archivo meta/main.yml. Como resultado, las versiones y las dependencias pueden gestionarse de forma explícita, lo cual garantiza la estabilidad y la uniformidad en los distintos entornos.

Pruebas

Las metodologías de prueba pueden aplicarse fácilmente a los roles debido a su estructura. Además, es posible crear pruebas específicas para cada uno de ellos, lo cual garantiza que funcionen como se espera antes de integrarlas a playbooks más grandes.

Sencillez

En los proyectos más grandes o complejos, los roles simplifican el uso de los playbooks de Ansible. Permiten escribirlos de forma más concisa para que las personas los lean y entiendan con facilidad, dado que ya no incluyen todas las tareas, los controladores y las plantillas. Esto también simplifica la identificación de los roles para su reutilización en proyectos nuevos, lo cual agiliza la creación del contenido de automatización y simplifica los flujos de trabajo. 

Guía para principiantes sobre Red Hat Ansible Automation Platform

Para crear un rol nuevo, use el comando ansible-galaxy role init role_name, el cual diseñará un directorio con la estructura estándar del directorio de roles. Una vez que lo haya verificado, podrá definir las tareas, las variables predeterminadas y otros elementos. También se puede agregar documentación a los archivos README.md y meta/main.yml, aunque esto no es necesario para que se ejecute el rol.

Quizás sea necesario tener más experiencia en el uso de Ansible para crear un rol nuevo, ya que puede representar un desafío para los equipos que aún están aprendiendo a diseñar contenido de automatización. No obstante, tanto los desarrolladores de automatización nuevos como los experimentados pueden aprovechar Red Hat® Ansible Lightspeed with IBM watsonx Code Assistant para llevar a cabo este proceso. Se trata de un servicio de inteligencia artificial generativa que proporciona sugerencias sobre el código en función de las prácticas recomendadas de Ansible. El uso de indicaciones en lenguaje natural permite describir los procesos de automatización que desea llevar a cabo. Ansible Lightspeed with watsonx Code Assistant le sugerirá contenido sobre una o varias tareas, las cuales pueden generarse e incorporarse a un rol o un playbook de Ansible posteriormente.

Este servicio permite crear, mantener y mejorar la calidad del código de Ansible con menor esfuerzo, lo cual aumenta la productividad y agiliza la adopción. 

Dado que es muy sencillo compartir los roles de Ansible, podrá incorporar aquellas probadas y con un buen mantenimiento a su proceso de automatización. Para compartirlas, use estos repositorios:

  • Ansible Galaxy: un repositorio sin costo para compartir roles y demás contenido de Ansible con la extensa comunidad de Ansible. Los roles se cargan aquí mediante la interfaz de línea de comandos (CLI), mientras que los conjuntos se comparten desde la interfaz web. Como se trata de un sitio comunitario, Red Hat no revisa, certifica ni respalda este contenido.
  • Ansible Automation Hub: se trata de un repositorio central donde podrá encontrar, descargar y gestionar los conjuntos de contenido Ansible Content Collections, y se incluye con la suscripción a Red Hat Ansible Automation Platform. Red Hat se encarga de alojarlo. No solo incluye nuestro contenido validado y certificado, sino también el de los partners proveedores de software independientes (ISV).
  • Centro de automatización privado: es un repositorio local que las empresas utilizan para gestionar, compartir y organizar su propio contenido de manera interna. Usted podrá compartir los roles y el contenido de automatización con otros integrantes de la empresa, lo cual permite que los equipos simplifiquen los flujos de trabajo y agilicen la automatización. 

Red Hat Ansible Automation Platform es una plataforma unificada que las empresas utilizan para agilizar y organizar las tareas de automatización, así como para generar innovaciones con ella. La suscripción de Red Hat brinda acceso a los conjuntos certificados Red Hat Ansible Content Collections y al contenido validado de Ansible, los cuales están disponibles en Ansible Automation Hub.

Red Hat Ansible Lightspeed with IBM watsonx Code Assistant, también incluido con la suscripción, simplifica la escritura y la mejora de las tareas que conforman los roles de Ansible, lo cual aumenta la eficiencia de los equipos que crean contenido de automatización. Se trata de una herramienta totalmente integrada a Visual Studio Code que ayuda a los desarrolladores en cualquier etapa del proceso en la que se encuentren. Esta les permite crear roles y playbooks de Ansible que se ajusten a las prácticas recomendadas sin tener que cambiar de entorno de desarrollo.

Ansible Lightspeed ofrece la función de comparación de fuentes de contenido, lo cual le permite verificar los datos fuente del entrenamiento para las sugerencias que proporciona y tomar mejores decisiones a la hora de crear las roles para sus usuarios. Además, permite crear y mejorar el código de Ansible con precisión y transparencia gracias a los modelos entrenados en cientos de roles de la comunidad de Ansible y los puntos de datos que brinda Red Hat, con lo cual puede cumplir con las demandas empresariales y agilizar la adopción.

Siga leyendo

Artículo

Conceptos básicos de Ansible

Ansible se encarga de automatizar algunos procesos de la TI, como la preparación de la infraestructura y la gestión de la configuración. En esta introducción conocerá los conceptos básicos de Ansible.

Artículo

¿Qué es la gestión de los procesos empresariales?

La gestión de los procesos empresariales (BPM) consiste en modelar, analizar y optimizar los procesos integrales de esta naturaleza para lograr sus objetivos comerciales estratégicos.

Artículo

¿Por qué conviene elegir Red Hat para la automatización?

Red Hat Ansible Automation Platform incluye las herramientas que necesitan los equipos para implementar y compartir la automatización en toda la empresa.

Más información sobre la automatización

Productos

Servicio de nuestros asesores estratégicos, quienes tienen una visión amplia de su empresa, analizan sus desafíos y lo ayudan a superarlos con soluciones completas y rentables.

Plataforma que permite automatizar toda la empresa, sin importar en qué etapa del proceso de automatización se encuentre.

Contenido adicional

Ebook

La empresa automatizada: unificación de las personas y los procesos

Ebook

Automatice los flujos de trabajo de la infraestructura

PODCAST

Command Line Heroes Temporada 3, Episodio 5 Lenguajes que llegaron para quedarse

Escúchalo ahora

Recursos adicionales

Forrester Wave™: Automatización de la infraestructura, primer trimestre del 2023

Léelo aquí

E-book

Red Hat Ansible Automation Platform: guía para principiantes

Empieza a aprender

Historia de éxito

Descubra cómo nuestros clientes utilizan Ansible Automation Platform para agilizar sus operaciones de TI

Dale un vistazo a los casos 

 

Capacitación

Curso de capacitación gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Curso de capacitación gratuito

Red Hat Ansible Automation for SAP

Automatización de Red Hat Enterprise Linux

Este curso le enseñará cómo automatizar tareas de administración de sistemas Linux  con la ayuda de la última versión de Ansible Automation Platform.

Toma el curso