Instalación de OMniLeads utilizando Docker

A partir de la versión 1.4.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 esta novedosa tecnología de «virtualización» sobre CentOS-7, FreePBX o Issabel como sistema operativo subyacente.

Nota

Antes de avanzar aclaramos que todo lo expuesto a continuación, tiene garantías en Issabel-20200102. Para FreePBX-15 existe un workaround que se detalla al final de esta sección.

Al ejecutar el proceso de instalación disponible en el repositorio, se procede con la instalación de:

  • Docker
  • docker-compose
  • PostgreSQL
  • MySQL
  • RTPEngine

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, Wombat Dialer, Redis y OMni-App se ejecutan en contenedores, mientras que RTPengine, PostgreSQL y MySQL sobre el sistema operativo base. A nivel de red, estos componentes se despliegan en una red LAN la cual es creada por docker, creando interfaces virtuales por cada componente. Este tipo de configuración de red es llamado Bridge network. La LAN por defecto para los containers es 192.168.15.0/24.

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: Método de instalación Self-Hosted o Método de instalación Deployer-nodes. Hay que tener en cuenta estas cosas:

  1. Revisar la sección OMniLeads sobre contenedores Docker del archivo de inventario
  2. Revisar la sección Variables Docker para ver las variables de docker a modificar.
  3. Modificar las variables del archivo de inventario Parámetros y contraseñas.

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.