Tarea 3: Playbooks con Roles
En esta tarea vamos a trabajar con dos servidores. Uno será el servidor web y el otro será el servidor de base de datos.
-
Crea dos máquinas virtuales Debian con las características indicadas en la tarea 1 (usuario sin privilegios con acceso por clave ssh y
sudosin contraseña). Puedes reutilizar la de la tarea 1 como una de ellas. Una será el servidor web (gruposervidores_web) y la otra el servidor de base de datos (gruposervidores_bd). Las dos deben ser accesibles desde tu equipo, porque al final accederás al servidor web desde el navegador. -
Vamos a trabajar con el directorio ansible/ejercicio2 del repositorio ejercicios_pi.
-
Rellena el inventario de forma adecuada para definir los dos equipos que vamos a configurar. Debes indicar los nombres de tus máquinas y los parámetros de acceso.
-
Prueba de conectividad. Ejecuta el comando
ansible -m ping allpara asegurarte que puedes conectar con las máquinas. -
Estudia la nueva definición del playbook en el fichero
site.yaml:- El campo
hosts: es el nombre del grupo o máquina en la que se van a ejecutar las tareas del rol. - El campo
roles/rolees el nombre del rol que se va a ejecutar.
Modifica el fichero
site.yamlpara conseguir que se ejecuten los roles como se indica a continuación:- El rol
commons(tareas comunes a todos los nodos) para todos los nodos (grupoall). - El rol
apache2(instalación y configuración de apache2) para todos los nodos del gruposervidores_web. - El rol
mariadb(instalación y configuración de mariadb) para todos los nodos del gruposervidores_bd.
- El campo
-
Los roles se van a definir en el directorio
roles. Se creará un directorio para cada rol con las carpetas que necesite (por ejemplo,commonssolo tienetasks):tasks: Contiene el yaml con las tareas.files: Contiene los ficheros que vamos a copiar a los nodos con el módulocopy.templates: Contiene las plantillas que vamos a copiar a los nodos con el módulotemplate.handlers: Contiene los manejadores para gestionar los servicios instalados.
-
El rol
commonsse ejecuta en todos los nodos. Modifica la tarea que está definida para que se actualice el sistema de todas las máquinas. -
El rol
apache2instala apache2 y copia algunos ficheros al servidor. Uno de los ficheros es un fichero de configuración, por lo que debemos reiniciar apache2 cada vez que se copia. En la tarea Copiar fichero de configuración y reiniciar el servicio:Debes poner en el parámetro
notifyel nombre de la tarea que se encuentra en el ficheromain.yamldel directoriohandlers, que será el encargado de reiniciar el servicio. -
El rol
mariadbinstala el servidor de base de datos mariadb, crea una base de datos y un usuario, y modifica la configuración del servicio.Para crear la base de datos y el usuario usa los módulos de la colección
community.mysql. Si instalaste ansible desde los repositorios de Debian ya la tienes; si instalasteansible-coreconpip, instálala antes conansible-galaxy collection install community.mysql.- Modifica las variables
cambia_nombre_variablepor las variables correctas. ¿En qué fichero tienes que buscar el nombre de las variables correctas? - Debes poner en el parámetro
notifyel nombre de la tarea que se encuentra en el ficheromain.yamldel directoriohandlers, que será el encargado de reiniciar el servicio.
- Modifica las variables
-
Ejecuta el playbook:
ansible-playbook site.yaml- Si tienes errores, repasa las modificaciones que has realizado para corregirlos.
- Cuando funcione la ejecución de la receta, cambia una de las tareas que notifican un reinicio para comprobar que se produce de nuevo el reinicio del servicio.
- Comprobación del funcionamiento: Accede desde el navegador web y comprueba los ficheros que hemos subido al servidor. Accede a la base de datos desde el servidor de base de datos, con el usuario que ha creado el rol
mariadb.