Deploy utilizando Ansible
Última actualización
Última actualización
En el siguiente apartado abordaremos los pasos necesarios para tener OMniLeads corriendo en entornos contenerizados bajo Podman.
Es requisito fundamental contar con una distribución de Linux con Podman instalado (3.0.0 or higher). En la actualidad, sistemas operativos modernos como Debian, Ubuntu, Rocky, o Alma Linux, tienen repositorios activados que permiten su descarga.
Nota: Si se trabaja sobre un VPS con una IP Pública, es mandatorio contar con una interface de red dedicada a una IP Privada.
Para ello procedemos a clonar el repositorio del Deploy Manager del proyecto y nos posicionamos en la carpeta de Ansible:
Es importante destacar que el uso del Deploy Manager con Ansible nos permitirá múltiples acciones administrativas:
crear nuevas instancias
llevar adelante procesos de upgrades & rollbacks
llevar proceos de Disaster Recovery: backups & restores
administrar cientos de instancias de OMniLleads en paralelo, mediante archivos de inventario
Para cada instancia operativa, una colección de componentes es invocada mediante los servicios de SystemD, cada uno de ellos ejecutándose en un contenedor. También es posible agrupar dichos contenedores en instancias físicas separadas (cluster horizontal) y darles características de redundancia y disponibilidad (cluster HA).
Debajo se puede apreciar un bosquejo de la arquitectura basada en contenedores y sus componentes involucrados:
Una instancia de OMniLeads es desplegada en un Linux server utilizando SystemD y Podman, a partir de un Bash Script que se alimenta de variables de entorno y utiliza un set de archivos de Ansible para automatización (Playbooks + Templates).
Este bash script será el responsable de la ejecución de múltiples acciones sobre uno o más tenants al mismo tiempo. Básicamente, busca el archivo de inventario de acuerdo a la ubicación especificada en la línea de comando y a partir de allí lanza el Playbook "raíz" de Ansible (matrix.yml).
Ejecutando el siguiente comando, podemos interpretar sus posibles usos:
Si el objetivo es correr instalaciones, upgrades, backups o restores, se deben especificar 2 parametros fundamentales:
--action=
--tenant=
En el siguinte ejemplo, el script llevará a cabo una acción de instalación sobre la carpeta "tenant-folder", en cuyo interior contiene el archivo de inventario correspondiente con la descripción y parametrización de su/s tenant/s.
Bajo este método de instalación, contaremos con la posibilidad de manejar contenedores (componentes) como servicios tradicionales de SystemD.
Detrás de cada acción disparada por el comando systemctl, un contenedor de Podman es lanzado, parado o reiniciado. Este contenedor es el resultado de una imágen invocada a partir de las variables de entorno configuradas en el deployment.
Debajo se expone un ejemplo, en el que observamos el archivo SystemD para el componente de Nginx: /etc/systemd/system/nginx.service:
Nginx, a su vez, tendrá su archivo de variables de entorno definidas de la siguiente manera: /etc/default/nginx.env:
Dependiendo de la estructura del archivo de inventario y de sus variables definidas, OMniLeads puede ser desplegado de manera remota en 3 esquemas posibles:
Correr OMniLeads All in One con Podman & Systemd: Todos los componentes representados en contenedores se despliegan en el mismo Linux Host.
Correr OMniLeads Cluster con Podman & Systemd: Los componentes se agrupan en una estructura de Cluster Horizontal (útil para alto tráfico o escenarios de alta carga).
Correr OMniLeads Cluster HA con Podman & Systemd: Los componentes se agrupan en dos nodos Activo-Pasivo para soporte de Alta Disponibilidad.