Creando tus propios módulos de Ansible

Vince Sesto

Follow

Mar 20, 2019 – 4 min read

Personalizar Ansible para tus necesidades es muy fácil

Cada día el número de módulos de Ansible sigue creciendo con soporte extra añadido a medida que el uso de la aplicación continúa. Entonces, ¿por qué necesitarías crear tus propios módulos de Ansible? Bueno, hay una serie de razones, pero creo que la más válida es, para que pueda obtener una comprensión de cómo funcionan los módulos. A pesar de que esta nueva habilidad puede no surgir muy a menudo, hay más de una probabilidad de que usted necesita para solucionar los errores o problemas con los módulos existentes de Ansible, por lo que saber cómo funciona todo puede ser una habilidad valiosa.

También hay que recordar que hay un montón de viejas aplicaciones heredadas o en las aplicaciones de la casa de su organización puede estar utilizando que no tienen sus propios módulos. Hay otras opciones para desplegar estas aplicaciones a través de Ansible y proporcionar plantillas para configurarlas, pero puede ser más fácil crear su propio módulo para estas aplicaciones. De cualquier manera, el siguiente documento le proporcionará los detalles para empezar y, con suerte, le permitirá ampliarlo más.

Si estás buscando una buena manera de aprender más sobre Ansible, sigue el enlace a nuestro último libro, Ansible Answers

Este es un ejemplo bastante básico, pero espero que veas que todo lo que necesitas es un poco de conocimiento de Python, combínalo con tus conocimientos de Ansible y podrás empezar a crear tus propios Módulos Ansible…No te preocupes si tus conocimientos son un poco deficientes en alguna de las dos cosas, todo se irá explicando a medida que vayamos avanzando juntos.

Sólo vamos a cubrir un módulo básico de «Hola Mundo», para mostrarte lo fácil que es. Este post no va a cubrir la instalación y los fundamentos de Ansible, así que siéntase libre de revisar nuestros posts anteriores para más detalles.

1.Comience por acceder a su entorno de trabajo, que ya tiene Ansible instalado en él. Dentro del directorio en el que estás trabajando crea un directorio de biblioteca:

mkdir library

2.Dentro del directorio de biblioteca, crea tu nuevo archivo de módulo con el nombre de hello_module.py:

touch library/hello_module.py

3. Con su editor de texto favorito, abra el nuevo archivo y añadir en el siguiente código(Los números de la izquierda están ahí sólo para la referencia y no debe ser añadido al archivo):

No hay nada demasiado complicado aquí, pero si su no está familiarizado con Python, aquí es un desglose de cada una de las líneas. La línea 1 especifica que necesita usar la versión de Python instalada localmente. La línea 3 importa los módulos específicos que se ejecutarán con Ansible. Las líneas 5 a 8 es la función que se ejecutará como parte de su módulo, específicamente la línea 6 proporciona la clase AnsibleModule que nos permite manejar los parámetros entrantes y nos permite salir del programa, siendo la respuesta «hola» y luego «¡mundo!» en la línea 7. Las líneas 10 y 11 ejecutan entonces la función cuando el módulo es llamado.

4.Ahora podemos crear un playbook para ejecutar el módulo. En tu directorio de trabajo, crea el archivo newmodule_test.yml:

touch newmodule_test.yml

5.Ahora puedes encender tu editor de texto y añadir los siguientes detalles para que tu playbook se ejecute

 1 ---
2 - hosts: 127.0.0.1
3 tasks:
4 - name: testing our new module
5 hello_module:
6 register: result
7
8 - debug: var=result

Si no has trabajado antes con Ansible, el código anterior es capaz de asignar el host en la línea 2 para que sea el que estás trabajando. Las líneas 3 a 6 ejecutan el nuevo módulo, con la línea 4 nombrando la tarea, la línea 5 llamando al módulo, y la línea 6 registrando el resultado como una variable llamada resultado. Luego, finalmente, la línea 8 utiliza la función de depuración para dar salida a los resultados para mostrar que todo funcionó.

6.Ahora podemos ejecutar el nuevo libro de jugadas con el siguiente comando:

ansible-playbook newmodule_test.yml

Lo que te da la siguiente salida:

Si todo salió bien, deberías ver la salida mencionada que te da un bonito «¡hola! «¡mundo!» como salida.

Ok, hemos sido bastante rápidos y sucios aquí y ese era el objetivo del post, pero todo lo que necesitas es ampliar tus conocimientos de Python y también serás capaz de ampliar lo que tus módulos pueden hacer.

¿Has encontrado este post útil? ¡Por favor, toca el botón de aplauso de abajo! 🙂

Acerca del autor

Deja un comentario