Actividad 5: Ansible II
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:
- Página 53 de Administració de sistemes operatius de xarxes.
- YouTube: OpenSSH: Autenticación con clave pública entre dos máquinas.
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.
- Lea atentamente las instrucciones para realizar una instalación básica de Wordpress en Ubuntu 20.04.
- 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.
- 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.
- 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. - 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 nombrewordpress
en MySQL. Compruebe su correcto funcionamiento. - 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 usuariowordpress_user
identificado por la contraseñasupersecreto
con control total en la base de datoswordpress
. Compruebe su correcto funcionamiento. - Añada la tarea "Instala Apache" que instale el servidor web Apache. Compruebe su correcto funcionamiento.
- Sabiendo que el módulo
apache2_module
aporta la funcionalidad equivalente aa2enmod
ya2dismod
, añada la tarea "Activa proxy_fcgi" que active en apache el móduloproxy_fcgi
. Compruebe el correcto funcionamiento. - El siguiente paso consiste en activar en Apache la configuración
php7.4-fpm
. Pero el móduloapache2_module
no parece gestionar configuraciones de Apache. Así que tendrá que utilizar el módulofile
para crear en el directorio/etc/apache2/conf-enabled
el enlace simbólicophp7.4-fpm.conf
que apunte a/etc/apache2/conf-available/php7.4-fpm.conf
de igual manera que lo creó la herramientaa2enconf
durante la instalación manual. El nombre de la tarea será: "Activa php7.4-fpm.conf". Compruebe el correcto funcionamiento. - 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. - El módulo
get_url
permite descargar un fichero. Añada una tarea con el nombre "Descarga wordpress" que descarguehttps://wordpress.org/latest.tar.gz
en/var/www
. Compruebe el correcto funcionamiento. - El módulo
file
con el parámetrostate=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. - 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. - El módulo
copy
con el parámetroremote_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. - 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
awww-data
. Compruebe el funcionamiento. - 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).
- Adjunte en la entrega el playbook desarrollado.