Combinamos Ansible y Python para automatizar el despliegue de la aplicación System Monitor en servidores. La app recopila información de hardware y procesos, la expone vía API HTTP y la envía a una base de datos. Con Ansible, se instala Python, se crea un entorno virtual, se copian los archivos y se configura la app como un servicio systemd, asegurando que se ejecute automáticamente y se mantenga activo.
Configuración principal de Ansible:
[defaults]
remote_tmp = /tmp/.ansible/tmp # Directorio temporal en los hosts remotos
roles_path = ./roles # Ruta donde se encuentran los roles
host_key_checking = False # Desactiva la verificación de llaves SSHPlantilla systemd para ejecutar la app Flask como servicio:
[Unit]
Description=System Monitor Flask API
After=network.target
[Service]
User={{ ansible_user }}
WorkingDirectory=/opt/system_monitor
Environment="PATH=/opt/system_monitor/venv/bin"
Environment="MONGO_URI=mongodb://192.168.18.3:27017/system_monitor"
ExecStart=/opt/system_monitor/venv/bin/python /opt/system_monitor/app.py
Restart=always
[Install]
WantedBy=multi-user.targetArchivo de inventario que lista los hosts y grupos de servidores gestionados. Define la estructura de la infraestructura y las conexiones SSH.
Contiene los playbooks de Ansible (.yml) con las tareas y roles a ejecutar en los hosts. Define qué configuraciones aplicar y en qué orden.
Directorio con roles reutilizables. Cada rol contiene tareas, handlers, templates y archivos organizados para funcionalidades específicas.
Lista las dependencias Python necesarias (ansible, paramiko, jinja2, etc.) para ejecutar el proyecto.
ansible-playbook -i inventories/hosts.ini playbooks/deploy.yml --ask-pass --ask-become-passResultado del despliegue:
Una vez desplegado, puedes verificar que el servicio Flask está funcionando mediante una petición HTTP:
curl http://tu-servidor:5000/Resultado de la petición HTTP:
....

