Volver al blog

Instalación y configuración de LAMP en Ubuntu 20.04 con Ansible

Instalación y configuración de LAMP en Ubuntu 20.04 con Ansible

La automatización de servidores es un proceso seguro y confiable para administrar y monitorear servidores de una manera efectiva y tecnológicamente avanzada. A diferencia del estilo tradicional de administrar servidores en centros de datos controlados por un equipo dedicado de expertos, todos los servidores se administran mediante automatización. Como resultado, los errores humanos se minimizan.

Las herramientas de gestión de configuración como Ansible, Puppet, Terraform, por nombrar algunas, se utilizan normalmente para automatizar servidores. Estas herramientas configuran servidores mediante automatización estableciendo procedimientos estándar para nuevos servidores, al tiempo que eliminan posibles errores cuando se realiza manualmente.

Ansible es un proyecto robusto de código abierto. Es flexible, fácil de usar y tiene la arquitectura más simplificada. No se requieren conocimientos de programación para usar los playbooks de Ansible y no requiere instalar software en los nodos. Por encima de todo, está repleto de excelentes capacidades que le permiten escribir scripts y agilizar la automatización.

En esta guía, te guiaremos a través de los pasos para instalar y configurar LAMP en Ubuntu 20.04 con Ansible.

Requisitos previos

Para seguir este tutorial, necesitarás:

¿Cuál es el propósito del Playbook de Ansible?

Este playbook de Ansible es una forma alternativa de ejecutar el procedimiento descrito en nuestra guía Configuración de la pila LAMP Linux Apache MySQL PHP.

La ejecución del playbook de Ansible dará como resultado las siguientes acciones en tus hosts de Ansible:

  • Instalar aptitude, una alternativa al gestor de paquetes apt preferido por Ansible.

  • Instalar todos los paquetes LAMP necesarios.

  • Crear un nuevo VirtualHost de Apache y configurar una raíz de documento dedicada.

  • Poner en ON el nuevo VirtualHost.

  • Poner en OFF el sitio web predeterminado de Apache, es decir, establecer la variable disable_default en true.

  • Elegir una contraseña para el usuario root de MySQL.

  • Eliminar las cuentas anónimas de MySQL y la base de datos de prueba.

  • Configurar UFW para permitir el tráfico HTTP en el puerto configurado, donde el valor predeterminado es 80.

  • Configurar un script de prueba de PHP.

Después de que el playbook de Ansible termine de ejecutarse, verás un entorno web PHP ejecutándose sobre Apache según las configuraciones que hayamos establecido.

Utilización del Playbook de Ansible

Primero, obtén el playbook de LAMP y sus dependencias del repositorio do-community/ansible-playbooks. A continuación, clona el repositorio con el playbook de LAMP en una carpeta local dentro del Nodo de Control de Ansible.

Ejecuta el comando git pull para asegurarte de tener acceso al contenido correcto que vamos a utilizar en este tutorial:

Si estás utilizando el repositorio do-community/ansible-playbooks por primera vez, considera clonar el repositorio en tu carpeta de inicio:

Ve a la carpeta lamp_ubuntu2004 y verás la estructura:

Aquí hay una descripción general de lo que significan estos archivos:

  • files/info.php.j2: Este es un archivo de plantilla donde puedes configurar una página de prueba de PHP en la raíz del servidor web.

  • files/apache.conf.j2: Otro archivo de plantilla utilizado para configurar el VirtualHost de Apache.

  • vars/default.yml: Es un archivo de variables para personalizar la configuración del playbook.

  • playbook.yml: Este archivo contiene todo el contenido de las tareas a ejecutar en el/los servidor/es remoto/s.

  • readme.md: Un archivo de lectura que contiene la información sobre este playbook.

Personalicemos las configuraciones de MySQL y Apache realizando cambios en el archivo de variables del playbook. Navega al directorio lamp_ubuntu2004 y abre el archivo vars/default.yml utilizando el editor nano :

Al abrir el archivo vars/default.yml, habrá una lista de variables que deben modificarse:

Comprendamos cada una de las variables en detalle:

  • mysql_root_password: Almacena la contraseña para la cuenta root de MySQL.

  • app_user: Es un usuario remoto que no es root en el host de Ansible que actúa como propietario de los archivos de la aplicación.

  • http_host: Muestra tu nombre de dominio.

  • http_conf: Muestra el nombre del archivo de configuración creado dentro de Apache.

  • http_port: Es el puerto HTTP para este host virtual, y 80 es el predeterminado.

  • disable_default: Se utiliza para deshacer las opciones predeterminadas que vienen con Apache.

Luego, guarda y cierra el archivo vars/default.yml archivo.

Una vez realizada toda la configuración, estamos listos para ejecutar este playbook en los servidores. Por defecto, la mayoría de los servidores en los playbooks están configurados para ejecutarse en cada servidor de los inventarios. Utilicemos la bandera -l para afectar solo a un único servidor o a un subgrupo seleccionado que se vea afectado por el playbook. Alternativamente, podemos usar la bandera -u para obtener una vista detallada de qué servidor remoto se está conectando y ejecutando en los hosts remotos.

Ejecutemos el playbook en un servidor server1 y conectémoslo con un usuario como justin:

Obtendrás una salida similar a esta:

Once ya veas que el playbook termina de ejecutarse, navega a tu navegador web y accede al host del servidor. No olvides adjuntar /info.php al final de la IP:

Al hacer clic en esta URL, verás una página como esta:

Advertencia: La página mostrada contiene información confidencial sobre su entorno PHP. Por lo tanto, se recomienda eliminar su información personal del servidor utilizando el siguiente comando:

rm -f /var/www/info.php

¿Qué hay en el Playbook?

A continuación, comprendamos el significado y la importancia de los archivos utilizados en el ansible-playbook contenido:

  • vars/default.yml

El default.yml archivo de variables contiene el nombre de dominio y la contraseña de la cuenta de MySQL root . Estos son los valores predeterminados utilizados en las tareas de ansible-playbook :

  • files/apache.conf.j2

El archivo apache.conf.j2 es un archivo de plantilla Jinja 2 utilizado para configurar un nuevo VirtualHost de Apache. Las variables utilizadas dentro de esta plantilla deben definirse en el archivo de variables vars/default.yml :

  • files/info.php.j2

Al igual que el archivo files/apache.conf.j2, el archivo info.php.j2 también es una plantilla Jinja. Usamos este archivo para configurar un script PHP de prueba en la raíz del documento de un servidor LAMP recién configurado:

  • playbook.yml

El archivo playbook.yml es donde se definen todas las tareas de esta configuración. En este archivo, se configuran todos los entornos LAMP. Comienza definiendo el grupo de servidores de destino y se establece en all. Además, toma el valor become como true ( become: true), y define todas las tareas que deben ejecutarse. A continuación, el archivo yaml tiene el archivo predeterminado, que es el archivo de variables vars/default.yml, para cargar las opciones de configuración:

Puede modificar estos archivos según las necesidades y requisitos de su proyecto.

Conclusión

En este tutorial, seguimos los pasos para instalar y configurar LAMP en un servidor remoto con Ansible. Hay muchas otras opciones de personalización con las que puede experimentar. Por ejemplo, usar la documentación oficial de Ansible y usar los casos de mysql_user del módulo de Ansible es una excelente manera de subir de nivel. Además, siga los pasos descritos en esta guía para practicar la automatización utilizando otras herramientas de gestión de configuración y sistemas operativos para aumentar el nivel de dificultad.

¿Es nuevo en el entorno LAMP y quiere profundizar en este tema? Explore los siguientes tutoriales en nuestro blog:

¡Feliz informática!

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.