includes y roles en ansible

Continuamos con ansible, ya sabemos la importancia de los playbooks, hemos visto como creamos variables, como usamos inventarios, incluso hemos usado handlers. En esta ocasión vamos a usar los includes y los roles.

includes

Ya somos conscientes de la potencia que tiene ansible y si nos centramos en los playbooks podemos hacerlo aún más potente. Con lo que vamos a ver es posible dividir esos playbooks en varias partes y así facilitar la edición. Con include podemos hacer una llamada a otro playbook o un fichero o varios ficheros que contienen otras tareas.

Como lo usaríamos, pues con la sentencia include:

Esto va a hacer una copia de fichero.conf a /tmp y llamara a un playbook llamado otro_playbook.yml que contiene lo siguiente:

Es decir, que una vez copiado el fichero.conf. Instalará vim y reiniciara el servicio de ntp.

roles

Como ya hemos visto en lo includes, podemos dividir playbooks en distintos partes. Con los roles podemos crear una estructura de ficheros y directorio para separar los elementos y así poder reutilizarlos fácilmente.

Como definimos los roles. Debemos tener un directorio con la siguiente estructura de subdirectorios:

roles/

    nombre del rol/

         files/ para ficheros que vamos a copiar

         templates/ ficheros que vamos a interpretar ya sea con variables o con logica

         tasks/main.yml en el yml indicaremos las tareas que ejecutaremos. Podemos usar include

        handlers/main.yml definiríamos los handlers que vamos a usar           

         vars/main.yml definiríamos las variables a utilizar para este rol

         defaults/main.yml definiríamos las variables por defecto

         meta/main.yml son tareas especiales. Lo veremos más adelante

Para invocar esta estructura de directorios, debemos definir dentro de playbook la siguiente llamada:

Vamos a realizar un ejemplo.

Con la estructura que tenemos vamos a copiar un fichero llamado fichero.conf, que está en el directorio files dentro de roles, al tmp de la maquina local y también vamos a usar el handlers para reiniciar el servicio ntp.

ejemplo_roles.yml

tasks/main.yml

files/

handlers/main.yml

La estructura de fichero del ejemplo seria esta:

Si ejecutamos en playbook ejemplo_roles.yml

Como veis cada vez vamos elaborando más nuestro playbooks y la ejecución de roles es el estándar dentro del ansible. Como os he comentado los roles son reutilizables para otros playbooks. Existe un proyecto llamado ansible galaxy que podemos descargar, un monto de roles creados por la comunidad.

Espero que os sirva

 

Deja un comentario