Instalación de OMniLeads utilizando Docker

A partir de la versión 1.16.0, OMniLeads puede ser desplegado en producción utilizando Docker. En esta sección se cubren todos los aspectos necesarios para correr la aplicación utilizando contenedores Docker.

Nota

Vamos a ejemplificar con Ubuntu 20.04 como Docker Engine Host.

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Estos componentes serán instalados y se van a ejecutar directamente sobre el sistema operativo de base. Por otro lado los componentes restantes de la aplicación, serán ejecutadoss como contenedores Docker. En la siguiente figura se presenta un esquema representativo acerca del cómo se despliega OMniLeads.

_images/install_docker_centos.png

Como se puede observar los componentes: Asterisk, Kamailio, Nginx, Redis, Websocket server y Django/Python-App se ejecutan en contenedores, mientras que RTPengine, PostgreSQL y Wombat Dialer sobre instancias de CentOS Linux separadas.

Procedimiento de instalación

Como primer paso se procede con el ingreso al host Linux para luego descargar el repositorio de OMniLeads y una vez clonado el repositorio debemos posicionarnos sobre el path relativo; ominicontacto/deploy/ansible.

yum -y install git kernel-devel kernel-headers
yum update -y
reboot

Una vez terminado el reboot se procede a usar Ansible para la instalación, pudiendo hacerlo de los dos modos: about_install_selfhosted o about_install_remote. Hay que tener en cuenta estas cosas:

  1. Revisar la sección about_install_inventory_docker del archivo de inventario
  2. Revisar la sección about_install_inventory_docker_vars para ver las variables de docker a modificar.
  3. Modificar las variables del archivo de inventario about_install_inventory_vars.

Nota

  • La variable subnet=192.168.15.0/24, debe modificarse OBLIGATORIAMENTE en caso de que su dirección IP LAN del Linux host (donde se ejecuta el docker-engine) coincida con este rango aquí citadas.
  1. Ejecutar el script deploy.sh de la siguiente forma:

Para ansible remoto:

./deploy.sh --docker-deploy

Para ansible self-hosted:

./deploy.sh --docker-deploy --iface=<your_iface>

Donde <your_iface> es la interfaz con la IP que se quiere usar para levantar los servicios que componen OMniLeads (suele ser la IP de la interfaz LAN del servidor).

Systemd - omnileads-prodenv

A partir de la instalación se deja disponible el servicio: omnileads-prodenv.service el cual servirá para parar/levantar la aplicación. El sistema se deja configurado para que inicie automáticamente luego de cada reinicio del sistema operativo de base.

Para verificar el servicio:

systemctl status omnileads-prodenv

Si todo es correcto deberíamos obtener la siguiente salida:

_images/install_docker_systemctl_status.png

Para bajar el servicio:

systemctl stop omnileads-prodenv

Para levantar el servicio:

systemctl start omnileads-prodenv

Workaround para freePBX

Luego de cada reboot del sistema operativo se deberán ejecutar los siguientes comandos para dejar apta la instancia para comenzar a trabajar.

systemctl restart docker
systemctl restart omnileads-prodenv

Estos dos comandos dejaran lista la instancia de OMniLeads sobre FreePBX.

Nota

En próximas versiones se tratará de optimizar la ejecución sobre FreePBX.