GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear roles de Ansible y usarlos en Playbook

Ansible es una herramienta de orquestación y administración de configuración de código abierto que facilita la automatización de tareas de TI en un entorno de TI de varios niveles. Con un solo comando, puede configurar varios servidores e implementar aplicaciones sin iniciar sesión en cada uno de los servidores y realizar la configuración usted mismo. Al hacerlo, Ansible simplifica las tareas que, de otro modo, consumirían mucho tiempo y serían tediosas.

Con el aumento en la cantidad de archivos de playbook que ejecutan varias tareas de automatización, las cosas pueden volverse un poco complejas. Y ahí es donde entran los roles de Ansible.

¿Qué es un rol de Ansible?

Un rol de ansible es un concepto dentro de Ansible que se ocupa de ideas en lugar de eventos. Esencialmente, un rol es un nivel de abstracción que se utiliza para simplificar cómo se escriben los archivos del libro de jugadas. Un rol proporciona un esqueleto para componentes reutilizables como variables, módulos, tareas y hechos que se pueden cargar en un archivo de Playbook.

Aplicación práctica

Para comprender mejor cómo se usan los roles, consideremos un escenario en el que tiene 8 tareas para realizar en 2 nodos remotos. Un enfoque sería definir todas las tareas que se ejecutarán en los hosts remotos en un solo archivo de libro de jugadas. Sin embargo, esto es tedioso y lo más probable es que aumente la complejidad del libro de jugadas. Un mejor enfoque sería crear 8 funciones separadas en las que cada función realizará una sola tarea y luego llamará a estas funciones en el archivo ansible-playbook.

Uno de los mayores beneficios de usar roles es que cada rol es independiente del otro. La ejecución de un rol no depende de la ejecución de otro rol. Además, los roles se pueden modificar y reutilizar, eliminando así la necesidad de volver a escribir las jugadas y tareas en el archivo Playbook.

Entonces, supongamos que desea crear un archivo de libro de jugadas para instalar la pila LAMP en un servidor Debian. Una mejor manera de hacerlo es comenzar creando 3 roles separados donde cada uno instalará Apache, MariaDB y PHP respectivamente en el host remoto. Luego escriba un libro de jugadas y llame a los roles en el archivo del libro de jugadas. Suponga que tiene un segundo servidor Debian que necesita para instalar Drupal CMS. En lugar de volver a escribir los roles, simplemente puede reutilizar los 3 roles que creó anteriormente y agregar otros roles para instalar Drupal.

¿Entiendes la idea?

Veamos ahora cómo puede crear roles de Ansible.

Cómo crear roles de Ansible

Para crear roles ansible desde cero, ejecute el comando ansible galaxy, el ejemplo se muestra a continuación:

$ ansible-galaxy init nombre-rol

Por ejemplo, para crear un rol llamado my-role, invoque el comando.

$ ansible-galaxy init my-role

Desde la pantalla de arriba, el comando crea el directorio my-role. Este directorio de funciones contiene los siguientes directorios o carpetas de forma predeterminada.

  • La carpeta 'predeterminados':contiene las variables predeterminadas que utilizará el rol.
  • La carpeta 'archivos':contiene archivos que el rol puede implementar.
  • La carpeta 'handlers':almacena los controladores que puede usar este rol.
  • la carpeta 'meta':contiene archivos que establecen las dependencias de roles.
  • La carpeta "tareas":contiene un archivo YAML que detalla las tareas para el rol en sí. Por lo general, este es el archivo main.yml.
  • La carpeta 'plantillas':contiene archivos de plantilla que se pueden modificar y asignar al host remoto que se está aprovisionando.
  • La carpeta 'tests':integra las pruebas con los archivos del libro de jugadas de Ansible.
  • La carpeta 'vars':contiene las variables que utilizará el rol. Puede definirlos en el archivo del libro de jugadas, pero se recomienda que los defina en este directorio.

Para ver la estructura del directorio de funciones, ejecute el comando de árbol seguido del nombre de la función.

$ tree <role-name>

Ahora, para demostración, vamos a crear tres roles ansible de la siguiente manera:

  • El rol de requisitos previos:instala git
  • La función mongodb:instala el motor de base de datos MongoDB
  • La función apache:instala el servidor web Apache

Entonces, usando la misma sintaxis que usamos anteriormente, vamos a crear los roles de la siguiente manera:

$ sudo ansible-galaxy init prerequisites
$ sudo ansible-galaxy init mongodb
$ sudo ansible-galaxy init apache

El siguiente paso es definir cada rol que haya creado. Para lograr esto, debe editar el archivo main.yml ubicado en la carpeta "tareas" para cada rol.

rol —>  tareas —> main.yml

Por ejemplo, para editar el rol de requisitos previos, navegue como se muestra:

$ cd prerequisites/tasks/

Luego edite el archivo main.yml.

$ sudo vim main.yml

El rol para instalar git se define como se muestra:

- name: Install git
  apt:
     name: git
     state: present
     update_cache: yes

Para MongoDB, tenemos 2 tareas. Instalando MongoDB e iniciando el demonio Mongod.

- name: Install MongoDB
  apt:
     name: mongodb
     state: present
     update_cache: yes

- name: Start Mongod daemon
  shell: "mongod &"

Y finalmente, para el servidor web Apache:

- name: install Apache web server
  apt:
     name=apache2
     state=present
     update_cache=yes

Por último, vamos a crear un archivo de libro de jugadas llamado stack.yml y llamar a los roles como se muestra.

---
- hosts: all
  become: yes
  roles:
        -  prerequisites
        -  mongodb
        -  apache

Como puede ver, el archivo del libro de jugadas parece bastante simple en comparación con la definición de cada tarea para el host.

Para asegurarse de que nuestros roles funcionen como se espera, ejecute el archivo del libro de jugadas de ansible como se muestra.

$ sudo ansible-playbook /etc/ansible/stack.yml

El libro de jugadas ejecutará todos los roles como se muestra.

Para asegurarnos de que los paquetes se instalaron correctamente, vamos a verificar sus versiones como se muestra:

$ mongod --version
$ apachectl -v
$ git --version

El resultado anterior confirma que, de hecho, los roles se ejecutan correctamente y que el paquete se instaló. ¡Perfecto!

Conclusión:

Los roles de Ansible simplifican los archivos del libro de jugadas, especialmente cuando tiene que ejecutar varias tareas en varios hosts. Además, puede reutilizar roles para varios hosts sin necesidad de modificar el archivo del libro de jugadas. Si te ha resultado útil esta guía, envíanos un mensaje y compártela con tus amigos.


Linux
  1. Cómo uso Ansible y Anacron para la automatización

  2. Cómo crear y usar subdominios

  3. Cómo instalar y usar Ansible en Debian 11

  4. Cómo crear un alias y usar el comando Alias ​​en Linux

  5. Cómo crear un libro de jugadas de Ansible

Cómo crear y usar datos personalizados en Ansible

Guía de Ansible:Cree un libro de jugadas de Ansible para LEMP Stack

Cómo definir y usar controladores en Ansible Playbooks

Cómo crear y ejecutar un archivo de libro de jugadas de Ansible

Roles de Ansible y cómo usarlos en Playbooks

Cómo crear y usar un archivo de intercambio en Linux