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.

  1. Crea dos máquinas virtuales Debian con las características indicadas en la tarea 1 (usuario sin privilegios con acceso por clave ssh y sudo sin contraseña). Puedes reutilizar la de la tarea 1 como una de ellas. Una será el servidor web (grupo servidores_web) y la otra el servidor de base de datos (grupo servidores_bd). Las dos deben ser accesibles desde tu equipo, porque al final accederás al servidor web desde el navegador.

  2. Vamos a trabajar con el directorio ansible/ejercicio2 del repositorio ejercicios_pi.

  3. 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.

  4. Prueba de conectividad. Ejecuta el comando ansible -m ping all para asegurarte que puedes conectar con las máquinas.

  5. 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/role es el nombre del rol que se va a ejecutar.

    Modifica el fichero site.yaml para 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 (grupo all).
    • El rol apache2 (instalación y configuración de apache2) para todos los nodos del grupo servidores_web.
    • El rol mariadb (instalación y configuración de mariadb) para todos los nodos del grupo servidores_bd.
  6. Los roles se van a definir en el directorio roles. Se creará un directorio para cada rol con las carpetas que necesite (por ejemplo, commons solo tiene tasks):

    • tasks: Contiene el yaml con las tareas.
    • files: Contiene los ficheros que vamos a copiar a los nodos con el módulo copy.
    • templates: Contiene las plantillas que vamos a copiar a los nodos con el módulo template.
    • handlers: Contiene los manejadores para gestionar los servicios instalados.
  7. El rol commons se ejecuta en todos los nodos. Modifica la tarea que está definida para que se actualice el sistema de todas las máquinas.

  8. El rol apache2 instala 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 notify el nombre de la tarea que se encuentra en el fichero main.yaml del directorio handlers, que será el encargado de reiniciar el servicio.

  9. El rol mariadb instala 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 instalaste ansible-core con pip, instálala antes con ansible-galaxy collection install community.mysql.

    • Modifica las variables cambia_nombre_variable por las variables correctas. ¿En qué fichero tienes que buscar el nombre de las variables correctas?
    • Debes poner en el parámetro notify el nombre de la tarea que se encuentra en el fichero main.yaml del directorio handlers, que será el encargado de reiniciar el servicio.
  10. 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.