Actividad 5: Ansible II

per Victor Carceler darrera modificació 2020-05-11T09:43:42+02:00

Teoría:

Ansible es una herramienta moderna, eficaz, segura y además sencilla de utilizar que permite automatizar la administración de un parque de equipos.

Lea la introducción a Ansible que se encuentra en: Apuntes sobre Ansible.

Para realizar la actividad es necesario configurar la autenticación de clave pública de manera que el usuario sin privilegios de la máquina en la que se ejecuta Ansible pueda iniciar sesión como root en las máquinas gestionadas.

La información sobre cómo configurar la autenticación con clave pública se encuentra en:

Para utilizar Ansible no es necesario ser administrador. Únicamente será necesario convertirse en administrador para instalar Ansible y para editar el inventario por defecto: /etc/ansible/hosts.

Puede consultar algunos de los playbooks utilizados en el instituto en: https://github.com/vcarceler/playbooks.

Entrega de la actividad:

La actividad se entregará en forma de documento HTML 5. En el documento deberá aparecer el fragmento de enunciando en el que se está trabajando y su resolución con los comandos y explicaciones que sean necesarios.

Por ejemplo:

Indique cómo establecer una sesión SSH con la máquina virtual de escritorio.

ssh usuario@192.168.0.100

Cuando se nos solicita la contraseña la introducimos.

Si la actividad solicita que se incluya un vídeo demostrativo puede utilizar cualquier programa para guardar el escritorio como:

  • La combinación de teclas CTRL + ALT + SHIFT + R permite activar y desactivar la grabación del escritorio en Ubuntu.
  • Un programa especializado como OBS Studio que se encuentra en los repositorios de Ubuntu con el nombre: obs-studio.

El vídeo obtenido se subirá a Youtube y estará insertado en el documento HTML 5.

Desarrollo de la actividad:

En esta actividad se propone el desarrollo de un playbook de Ansible que instale Wordpress, así que primero será necesario familiarizarse con la instalación manual de Wordpress en Ubuntu 20.04.

  1. Lea atentamente las instrucciones para realizar una instalación básica de Wordpress en Ubuntu 20.04.
  2. Lleve a cabo la instalación de Wordpress detallada en una MV con Ubuntu 20.04 server. Asegúrese de entender cada uno de los pasos realizados.
  3. Cuando ya se sienta confortable con la instalación manual de Wordpress realice una nueva instalación manual registrando todo el proceso en un solo vídeo que deberá subir a Youtube. La MV tendrá una interfaz de red configurada de manera estática y un hostname adecuado.

Para el desarrollo del playbook será necesario contar con la infraestructura preparada en la actividad anterior.  Es decir:

  • Una MV con IP fija y Ansible instalado con un fichero inventario en /etc/ansible/hosts.
  • Una MV que esté configurada para ser gestionada por Ansible (clave pública del usuario sin privilegios de Ansible en /root/.ssh/authorized_keys de la máquina gestionada). De esta máquina se irán realizando clones (cada uno con una de las IPs indicadas en el fichero inventario) para que Ansible las gestione.

Desarrollo del playbook wordpress.yml. Es muy importante que compruebe el correcto funcionamiento de cada tarea del playbook antes de escribir la siguiente. Cuando quiera volver a comprobar el efecto del playbook podrá utilizar un nuevo clon de la máquina gestionada o, si ha tomando una instantánea, revertir el estado de la máquina.

  1. Escriba el playbook wordpress.yml de manera que contenga una tarea con el nombre "Instalación de PHP y MySQL" que instale todos los paquetes correspondientes a PHP, las extensiones de PHP necesarias para Wordpress y MySQL. Compruebe su funcionamiento. Compruebe que si se vuelve a lanzar el playbook en una máquina en la que ya están instalados los paquetes no se produce ningún cambio.
  2. El módulo mysql_db permite añadir o eliminar bases de datos MySQL. Añada al playbook la tarea "Crea la base de datos wordpress" que cree una base de datos con el nombre wordpress en MySQL. Compruebe su correcto funcionamiento.
  3. El módulo mysql_user permite definir usuarios en MySQL. Utilice el módulo para añadir la tarea "Crea el usuario wordpress_user" que defina en MySQL el usuario wordpress_user identificado por la contraseña supersecreto con control total en la base de datos wordpress. Compruebe su correcto funcionamiento.
  4. Añada la tarea "Instala Apache" que instale el servidor web Apache. Compruebe su correcto funcionamiento.
  5. Sabiendo que el módulo apache2_module aporta la funcionalidad equivalente a a2enmod y a2dismod, añada la tarea "Activa proxy_fcgi" que active en apache el módulo proxy_fcgi. Compruebe el correcto funcionamiento.
  6. El siguiente paso consiste en activar en Apache la configuración php7.4-fpm. Pero el módulo apache2_module no parece gestionar configuraciones de Apache. Así que tendrá que utilizar el módulo file para crear en el directorio /etc/apache2/conf-enabled el enlace simbólico php7.4-fpm.conf que apunte a /etc/apache2/conf-available/php7.4-fpm.conf de igual manera que lo creó la herramienta a2enconf durante la instalación manual. El nombre de la tarea será: "Activa php7.4-fpm.conf". Compruebe el correcto funcionamiento.
  7. El módulo service permite arrancar, detener, reiniciar servicios. Añada una tarea con el nombre "Reinicio de apache" que reinicie el servidor web. Compruebe el correcto funcionamiento.
  8. El módulo get_url permite descargar un fichero. Añada una tarea con el nombre "Descarga wordpress" que descargue https://wordpress.org/latest.tar.gz en /var/www. Compruebe el correcto funcionamiento.
  9. El módulo file con el parámetro state=absent permite borrar ficheros. Añada una tarea con el nombre "Borrado de html" que elimine el directorio /var/www/html. Compruebe el correcto funcionamiento.
  10. El módulo unarchive permite desarchivar un archivo. Añada una tarea con el nombre "Desarchiva wordpress" que desarchive /var/www/latest.tar.gz. Compruebe el correcto funcionamiento.
  11. El módulo copy con el parámetro remote_src=yes permite copiar ficheros. Añada una tarea con el nombre "Copia wordpress" que copie /var/www/wordpress en /var/www/html. Compruebe el correcto funcionamiento.
  12. El módulo file permite cambiar recursivamente el propietario de los ficheros. Añada una tarea con el nombre "Cambia propietario de wordpress" que cambie de manera recursiva el propietario de /var/www/html a www-data. Compruebe el funcionamiento.
  13. Registre un vídeo en el que se observe cómo Ansible instala wordpress en dos máquinas virtuales a la vez. Muestre en el vídeo cómo al completarse la ejecución del playbook en el navegador se puede ver la página de wordpress que da inicio a la configuración web (que se puede ver al final de este documento).
  14. Adjunte en la entrega el playbook desarrollado.

Captura de pantalla de 2020-05-09 13-33-10.png