Roles en Ansible. ¡Así de fácil!

¡Hola Hitecheros! Para los que ya me han preguntado sobre algunos otros conceptos para aprender a la hora de configurar Ansible en servidores Linux, decir que no hemos acabado, ¡ni mucho menos!

Esa es la cosa buena de Ansible, que aunque tu curva de aprendizaje es rápida, nunca te vas a aburrir porque puedes profundizar en otros aspectos más complejos como es en este caso los roles en Ansible.

Requerimientos para el uso de roles en Ansible

Decir, que es necesario que tengamos una arborescencia correcta donde tendremos toda nuestra configuración elegida.

Gracias a los roles en #Ansible los Playbooks son mucho más simples

La forma de crear esta arborescencia, se puede hacer de las siguientes maneras:

Opción 1: Realizar la arborescencia con la estructura de carpetas a mano, quizás un poco tedioso (sobre todo si tenemos varios servidores Ansible)

Opción 2: O a través del uso de Ansible-galaxy que no deja de ser un lugar de búsqueda, donde se puede intercambiar el trabajo ya avanzado por la comunidad que ha creado con anterioridad.

Antes de seguir, te recomiendo que le eches un vistazo a este vídeo introductorio (para los que no se defiendan inglés, activar subtítulos)

Profundizando en el concepto de Roles en Ansible

Efectivamente, el uso de los roles es cuando ya nuestros Playbook se han vuelto cada vez más complejos.
Gracias al uso de los roles en Ansible, podremos dejar un Playbook con un mínimo de configuración y posteriormente dotar de otras funcionalidades de forma externa a bajo nivel a los roles.

Como podéis suponer, la forma más rápida de recurrir y crear roles es mediante el uso del “ansible-galaxy”.

Pongamos un ejemplo gráfico:

[root@centos1 roles]# ansible-galaxy init apache
- apache was created successfully
[root@centos1 roles]# ls
apache localaction.yml
[root@centos1 roles]# pwd
/etc/ansible/roles

 

Si entramos en el directorio apache podemos ver la siguiente estructura de ficheros:

[root@centos1 apache]# ll
total 4
drwxr-xr-x. 2 root root 22 abr 6 20:13 defaults
drwxr-xr-x. 2 root root 6 abr 6 20:13 files
drwxr-xr-x. 2 root root 22 abr 6 20:13 handlers
drwxr-xr-x. 2 root root 22 abr 6 20:13 meta
-rw-r--r--. 1 root root 1328 abr 6 20:13 README.md
drwxr-xr-x. 2 root root 22 abr 6 20:13 tasks
drwxr-xr-x. 2 root root 6 abr 6 20:13 templates
drwxr-xr-x. 2 root root 39 abr 6 20:13 tests
drwxr-xr-x. 2 root root 22 abr 6 20:13 vars

¿Qué es lo que podemos destacar de aquí?

  • Pues vemos que se nos han creado diferentes archivos y directorios como lo son:
    El directorio “Defaults”. Que es un directorio que debe tener a su vez un archivo con extensión YML llamado “main.yml”:
[root@centos1 apache]# cd defaults/
[root@centos1 defaults]# ls
main.yml

 

Como se puede sospechar, este archivo “main.yml” va a contener toda la información de las variables globales utilizadas por el rol que acabamos de instalar gracias a ansible-galaxy.

En este fichero, podríamos incluir por ejemplo, el directorio de instalación de un paquete.

  • El directorio “Files”. Que tendrá todos los archivos necesarios propios de un despliegue de una aplicación.

Una advertencia, los ficheros que están bajo el directorio files de ansible no se pueden alterar de ningún modo, por lo que sólo serán copiados de igual a igual a todos los servidores gestionados. Un ejemplo rápido para entendernos podría ser un paquete “.rpm” o un “.bin” o mismamente, el código de una aplicación.

  • El directorio “Templates” al igual que sucede con los “Files” están especialmente indicados para ser propagados a los servidores gestionados, pero a diferencia de lo que sucedía en los archivos “Files”, aquí si nos va a dejar realizar modificaciones.

Dicho de otro modo, se va a poder usar variables de configuración a nuestro template que tengamos instalado para que a su vez este sea aplicado a los servidores gestionados.

Como nota adicional, decir que Ansible permite el uso de variables en los Playbooks y los Templates mediante el uso de un sistema “Jinja2”.

  • Las tareas o Task dentro de nuestro directorio de Ansible-Galaxy. 

En algún otro momento hablaremos de las tareas en profundidad porque no solo afecta a la estructura de un Rol sino que es un concepto común para Playbooks. Por ejemplo, para que queda claro el concepto, un playbook va a contener una serie de tareas que estas a su vez realizarán una serie de acciones.

Estas acciones, se apoyarán en el uso de módulos con diferentes modificadores u opciones y de esta manera, todo queda correctamente jerarquizado.

Muchas gracias por tomaros la molestia de seguir leyendo cada día el blog.

gracias por compartir
gracias por compartir

Si tienes cualquier aportación que hacer, es totalmente recibida y por supuesto, gracias por compartir.

Roles en Ansible. ¡Así de fácil!
4.9 (97.14%) 7 votos

Dejar respuesta

Please enter your comment!
Please enter your name here