Implementación de un Despliegue Práctico de Aplicación Web
Apliquemos lo que hemos aprendido en un escenario más práctico: desplegar una aplicación web simple usando el módulo get_url de Ansible.
Configuración del Proyecto de Aplicación Web
Primero, creemos una estructura de directorio para nuestra aplicación web:
mkdir -p ~/project/ansible-get-url/webapp/public
cd ~/project/ansible-get-url
Creación del Playbook de Despliegue de la Aplicación Web
Ahora, crearemos un playbook llamado deploy-webapp.yml que descargará los archivos necesarios para nuestra aplicación web:
---
- name: Deploy Web Application Files
hosts: localhost
become: no
vars:
webapp_dir: ~/project/ansible-get-url/webapp
assets_base_url: https://raw.githubusercontent.com/ansible/ansible-documentation/devel/docs/docsite/rst/_static
tasks:
- name: Ensure webapp directories exist
file:
path: "{{ item }}"
state: directory
mode: "0755"
loop:
- "{{ webapp_dir }}"
- "{{ webapp_dir }}/public"
- "{{ webapp_dir }}/public/css"
- "{{ webapp_dir }}/public/images"
- name: Create index.html
copy:
dest: "{{ webapp_dir }}/public/index.html"
content: |
<!DOCTYPE html>
<html>
<head>
<title>Ansible Demo App</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<h1>Welcome to Ansible Demo</h1>
<p>This site was deployed using Ansible's get_url module!</p>
<img src="images/ansible-logo.png" alt="Ansible Logo">
</div>
</body>
</html>
- name: Download CSS file
get_url:
url: "{{ assets_base_url }}/css/ansible.css"
dest: "{{ webapp_dir }}/public/css/style.css"
mode: "0644"
timeout: 30
retries: 3
- name: Download Ansible logo
get_url:
url: "{{ assets_base_url }}/images/ansible_logo.svg"
dest: "{{ webapp_dir }}/public/images/ansible-logo.png"
mode: "0644"
timeout: 30
retries: 3
- name: Install Python HTTP server
apt:
name: python3-http.server
state: present
become: yes
- name: Display information about running the web server
debug:
msg: |
Web application has been deployed!
To start the web server, run:
cd {{ webapp_dir }}/public && python3 -m http.server 8080
Then access it at: http://localhost:8080
Este playbook:
- Crea la estructura de directorio necesaria para nuestra aplicación web
- Crea un archivo index.html con contenido HTML básico
- Descarga un archivo CSS y una imagen del logotipo de Ansible usando el módulo
get_url
- Instala un servidor HTTP de Python
- Muestra información sobre cómo ejecutar el servidor web
Ejecución del Playbook de Despliegue de la Aplicación Web
Ejecutemos el playbook:
ansible-playbook deploy-webapp.yml
Debería ver una salida que indica que la aplicación web se ha desplegado correctamente.
Inicio del Servidor Web
Ahora, iniciemos el servidor web para probar nuestra aplicación desplegada:
cd ~/project/ansible-get-url/webapp/public
python3 -m http.server 8080 &
El servidor web ahora se está ejecutando en segundo plano en el puerto 8080. Si estuviera en un entorno normal con acceso al navegador, podría acceder a la aplicación web en http://localhost:8080.
Verificación de los Archivos Desplegados
Verifiquemos que todos los archivos requeridos se hayan desplegado correctamente:
ls -la ~/project/ansible-get-url/webapp/public/
Debería ver el archivo index.html y los directorios que creamos.
ls -la ~/project/ansible-get-url/webapp/public/css/
Esto debería mostrar el archivo CSS descargado.
ls -la ~/project/ansible-get-url/webapp/public/images/
Esto debería mostrar la imagen del logotipo de Ansible descargada.
Visualización del Contenido HTML
Comprobemos el contenido del archivo index.html:
cat ~/project/ansible-get-url/webapp/public/index.html
Debería ver el contenido HTML que creamos en el playbook.
Detención del Servidor Web
Cuando termine de probar, puede detener el servidor web buscando su ID de proceso y matándolo:
pkill -f "python3 -m http.server 8080"
¡Felicidades! Ha desplegado con éxito una aplicación web simple usando el módulo get_url de Ansible para descargar los archivos necesarios.