Las funciones de Ansible y su uso

Copiar URL

Las funciones 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, las funciones permiten crear paquetes con este tipo de contenido que pueden ejecutarse en varios plays, reutilizarse en distintos playbooks y compartirse con otros usuarios.

Las funciones 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 una de ellas 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 funciones 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 las funciones.

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 las funciones de Ansible, deben solicitarse a un playbook, ya sea mediante su registro con la opción de funciones o su incorporación a la sección de tareas de funciones con los comandos include_role o import_role. Si se registran con la opción de funciones 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 las funciones 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 funciones 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 las funciones de Ansible y solicitarlas al playbook.

En el siguiente ejemplo se muestra el uso de una función, 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 una sola función.

- 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 las funciones de Ansible, en lugar de escribir todo el contenido de automatización en un único playbook, ofrece varias ventajas:

Reutilización y uso compartido

Las funciones 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 las funciones promueve la automatización modular, en la cual cada una de ellas 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

Las funciones 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 una función en particular se encuentra en el mismo directorio.

Parámetros

Las funciones permiten definir variables predeterminadas que pueden sustituirse cuando la función se usa en un playbook de Ansible. De este modo, no es necesario modificarla 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 las funciones 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 las funciones debido a su estructura. Además, es posible crear pruebas específicas para cada una de ellas, 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, las funciones 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 las funciones 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 una función nueva, use el comando ansible-galaxy role init role_name, el cual diseñará un directorio con la estructura estándar del directorio de funciones. 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 la función.

Quizás sea necesario tener más experiencia en el uso de Ansible para crear una función nueva, 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 IA 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 una función 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 las funciones 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 funciones y demás contenido de Ansible con la extensa comunidad de Ansible. Las funciones 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 las funciones 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 las funciones 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 funciones 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 funciones 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 funciones 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ú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