Los módulos de Ansible y su funcionamiento

Copiar URL

Un módulo de Ansible® es un programa pequeño que lleva a cabo tareas en un equipo local, una interfaz de programación de aplicaciones (API) o un host remoto. Los módulos se expresan como código, por lo general en Python, y contienen metadatos que definen el momento y el lugar en los que se ejecuta una tarea de automatización y los usuarios que pueden hacerlo. Puede descargar miles de módulos de Ansible de distintos repositorios, como Ansible Automation Hub y Ansible Galaxy, aunque también es posible crear módulos personalizados y compartirlos con otros usuarios de Ansible de su empresa o de la extensa comunidad de Ansible.

Los módulos pueden llevar a cabo funciones de TI para varios casos prácticos, incluidas las conexiones de red; la preparación de los sistemas; la seguridad; las comunicaciones, y la gestión de las nubes, los usuarios y las configuraciones. Para comprender la forma en que los módulos de Ansible pueden ayudarlo a automatizar estos casos prácticos y otros, es importante que entienda la relación que tienen con otros elementos fundamentales de la automatización de Ansible, como las tareas, los plays, los playbooks y las funciones.

  • Tareas: definen la acción que se va a aplicar a un host gestionado, pero no especifican el host al que se aplicará. Puede activar un módulo dentro de una tarea para que se ejecute en un host, pero este se definirá fuera de la tarea, en el play.
  • Plays: son la unidad central de ejecución de Ansible e incluyen una lista de tareas que asignan a hosts gestionados específicos. También contienen variables y, en los casos prácticos más complejos, pueden incluir funciones.
  • Playbooks de Ansible: incluyen uno o más plays. Se escriben en YAML, son comprensibles para las personas y se pueden compartir fácilmente.
  • Funciones de Ansible: empaquetan el contenido de Ansible que se va a usar dentro de un play, incluidos los controladores, las tareas, las variables, los plugins, las plantillas y los archivos. Las funciones de Ansible pueden importarse a un play, reutilizarse en otros plays o playbooks y compartirse con otros usuarios de la automatización.
  • Conjuntos: son paquetes de contenido de Ansible diseñados para ayudar a los desarrolladores de automatización a trabajar más rápido y mejorar su productividad. Son el método ideal para empaquetar y compartir los módulos.
  • Plugins: son fragmentos de código que se basan en las funciones centrales de Ansible y, generalmente, se ejecutan en el nodo de control. Si bien los módulos son un tipo de plugin, suelen ejecutar tareas en un elemento objetivo, no en el nodo de control. 

Piénselo de este modo: si las tareas son los trabajos que deben llevarse a cabo, los módulos son las herramientas que se necesitan para lograrlo. Una tarea define una acción que debe llevarse a cabo, el módulo se ejecuta en un host gestionado para realizar esa acción y, cuando esto termina, se recopilan valores de retorno en formato JSON.

Por lo general, los módulos se almacenan en la biblioteca de un playbook y se ponen en funcionamiento cuando este ejecuta la tarea asociada, pero también pueden incluirse en una función o un conjunto. Cuando una función de Ansible se importa a un playbook, los módulos del directorio de funciones ejecutan las tareas que se encuentran dentro de ella. Los módulos que están escritos en un solo play se utilizarán esa única vez, pero aquellos que se encuentran dentro de una función se ejecutarán cada vez que se solicite esa función al playbook.

Los siguientes tres módulos de ejemplo se incluyen con Ansible Core y forman parte de todas las instalaciones de Ansible:

  • módulo dnf (ansible.builtin.dnf): instala, actualiza y elimina los paquetes y los grupos con dnf, el gestor de paquetes de software predeterminado de Fedora.

  • módulo de servicio (ansible.builtin.service): gestiona los servicios en los hosts remotos. Algunas de las acciones que llevan a cabo incluyen iniciar, detener y reiniciar servicios, entre otras.

  • módulo de comando (ansible.builtin.command): ejecuta los comandos en los elementos objetivo.

Cuando los módulos de Ansible no son suficientes para su caso práctico de automatización, puede crear sus propios módulos para llevar a cabo una tarea específica. Si bien el proceso de creación de un módulo puede variar en función de la complejidad de las tareas de automatización que desee llevar a cabo, puede desarrollar su propio módulo de la siguiente manera:

  1. Cree un directorio de biblioteca en el repositorio.
  2. Cree un archivo del módulo en Python o en su lenguaje de programación preferido dentro del directorio de la biblioteca.
  3. Desarrolle un playbook de prueba en el directorio de la biblioteca.
  4. Ejecute el playbook para probar el módulo.

Los módulos deben ser concisos y tener como objetivo resolver un problema muy específico; esto permite probarlos, utilizarlos, reutilizarlos y compartirlos fácilmente. También deben brindar una interfaz definida que acepte argumentos y sea idempotente, lo cual significa que no deben aplicar ningún cambio si detectan que el estado actual del nodo coincide con el estado final deseado.

Los usuarios que recién empiezan a desarrollar contenido de Ansible, o quienes desean optimizar el proceso de creación de módulos, pueden utilizar una herramienta de la comunidad como Content Builder, que genera módulos y otros plugins de Ansible para casos prácticos relacionados con las conexiones de red, la seguridad y el contenido de la nube, entre otros.

Al igual que otros tipos de contenido de Ansible, los módulos están diseñados para poder compartirse. Con una suscripción a Red Hat® Ansible Automation Platform, puede empaquetar los módulos en conjuntos y cargarlos en Ansible Automation Hub o compartirlos con toda la empresa mediante un centro de automatización privado. También puede distribuirlos en Ansible Galaxy, un repositorio gratuito para compartir contenido de Ansible con los usuarios de la comunidad.

Si bien los módulos cumplen un papel esencial en la ejecución de los playbooks, también son valiosos para las empresas que buscan adoptar un enfoque para la gestión de la TI más avanzado que se anticipe a los problemas.

Para ello, utilizan la automatización basada en eventos, ya que conecta los datos de los eventos de la TI con acciones automatizadas, lo cual evita que los equipos tengan que responder a los problemas o corregirlos manualmente. Un evento puede ser cualquier actividad que afecte la prestación de un servicio o la gestión de la infraestructura de TI.

Event-Driven Ansible, una función de Red Hat Ansible Automation Platform, es una solución integral para los equipos de automatización que buscan obtener los beneficios de la automatización basada en eventos. Utiliza los rulebooks de Ansible para responder a los eventos con las acciones adecuadas que se hayan definido previamente, como la ejecución de los playbooks, las funciones, las plantillas y los módulos. Un rulebook utiliza instrucciones condicionales del tipo "si pasa esto, entonces se debe hacer esto otro" para ayudarlo a automatizar las tareas de rutina, como la ejecución de los playbooks de corrección en el caso de producirse una interrupción del sistema.

Cuando los datos de una fuente de eventos cumplen con las condiciones definidas en un rulebook, Ansible Automation Platform activa las acciones que usted definió, las cuales pueden incluir la ejecución de todo un playbook o de un solo módulo para llevar a cabo una tarea específica. La respuesta depende completamente de lo que quiere que suceda cuando se produzca un evento y de lo que haya definido en el rulebook.

En el siguiente ejemplo, se muestra la manera en que se activa un módulo de depuración cuando un evento de una fuente de webhook cumple con las condiciones definidas en un rulebook.

El rulebook.yml:

--- - name: Listen for events on a webhook hosts: all ## Define our source for events sources: - ansible.eda.webhook: host: 0.0.0.0 port: 5000 ## Define the conditions we are looking for rules: - name: Say Hello condition: event.payload.message == "Ansible is super cool" ## Define the action we should take should the condition be met action: run_playbook: name: say-what.yml 

El playbook say-what.yml:

- hosts: localhost connection: local tasks: - debug: msg: "Thank you, my friend!" 

En este caso, el rulebook especifica que el playbook say-what.yml deberá ejecutarse cuando se cumplan las condiciones que se definieron. Como el módulo de depuración está incluido en el playbook say-what.yml, se pone en funcionamiento cada vez que se ejecuta el playbook.

Event-Driven Ansible, que forma parte de Ansible Automation Platform, ofrece las funciones de gestión de eventos que se necesitan para prestar servicios de TI rápidos y eficientes. A su vez, le permite llevar a cabo las tareas sin necesidad de intervención manual, con lo cual la empresa puede dedicar más tiempo a los proyectos de mayor importancia.

Dado que la automatización basada en eventos suele depender de herramientas de supervisión de terceros para identificar el momento en que se produce un evento, el uso del contenido de Ansible que se integra a las plataformas y las herramientas que ya utiliza puede facilitar la transición a flujos de trabajo automatizados más eficientes. Con la suscripción a Red Hat Ansible Automation Platform, obtiene acceso a miles de paquetes de módulos, funciones, plugins y documentación en forma de conjuntos de Ansible Content Collections. Estos incluyen tanto el contenido de Red Hat Ansible Certified Content como el contenido validado de Ansible de Red Hat y nuestros partners, los cuales se pueden descargar sin problema a través de Ansible Automation Hub.

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úchelo ahora

Recursos adicionales

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

Léalo aquí

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