Instalación de OMniLeads

La instalación está basada en Ansible junto a un par bash scripts que preparan el entorno (usuarios, passwords, escenario de NAT, etc.) e invocan la ejecución del Playbook de Ansible

Todo el código se encuentra versionado dentro del repositorio de OMniLeads.

_images/install_intro.png

Existen dos formas en las que se puede ejecutar la instalación (Self-hosted y Deployer-Nodes).

Método de instalación Self-Hosted

Bajo esta modalidad el proceso de instalación y gestión de actualizaciones se maneja utilizando el bash script deploy.sh directamente sobre el host que va a alojar OMniLeads. Por lo tanto sobre dicho host se debe descargar el repo de la App, allí se trabaja con el archivo de inventario para luego lanzar el instalador.

Por cada instancia de OMniLeads que se administre, se deberá ingresar por SSH, descargar el repositorio y correr la instalación. Luego las actualizaciones también implicarán que el administrador se conecte a cada instancia y ejecute los pasos necesarios en cada servidor gestionado.

Nota

Este método resulta ideal en el marco de la Infraestructura como código, ya que nos permite crear la instancia y provisionar la misma con la instalación de OML.

_images/install_self_hosted.png

Método de instalación Deployer & Nodes

En esta modalidad se plantea utilizar un deployer (es decir una estación de trabajo con Ansible instalado) y luego desde este único deployer instalar y gestionar actualizaciones de un número ilimitado de instancias de operativas de OMniLeads, facilitando y centralizando la gestión, ya que solo implica un acceso SSH a cada nodo.

Cada nodo-host a gestionar debe admitir acceso SSH de root / sudo desde nuestro deployer.

_images/install_deployer.png

Más allá del método de instalación seleccionado (Self-Hosted ó Deployer & Nodes), OMniLeads puede ser desplegado en varios escenarios.

Despliegue de OMniLeads sobre arquitectura tradicional (AIO)

OMniLeads puede correr como una aplicación tradicional desplegando una instalación de todos los componentes sobre un único HOST. Siempre y cuando se utilice como base GNU/Linux CentOS-7 o Amazon Linux. A este tipo de instalación lo llamamos OMniLeads AIO (All In One).

_images/install_arq_aio.png

Despliegue de OMniLeads en cluster de componentes

En este escenario podemos separar los componentes de la aplicación de manera tal que puedan ser ejecutados como servicios aislados corriendo sobre host dedicados. Podemos entonces ir sacando componenetes hacia host aislados en la medida que necesitemos escalar.

Por otro lado en la era de las Nubes Públicas (recinto donde podemos ejecutar nuestras aplicaciones) se hace muy tentador aprovechar la relación precios VS instancias y desplegar por defecto OMniLeads en un cluster horizontal de componentes.

_images/install_arq_cluster_a.png

Podemos configurar el cluster de acuerdo a nuestra preferencias y necesidades.

Nota

Como es sabido en ambientes Cloud el costo asociado a mantener N instancias con M recursos es generalemente similar a mantener una sola gran instancia instancia con NxM recursos.

_images/install_arq_cluster_b.png

Lo interesante de aislar los componenetes pasa por el hecho de otorgar a cada componente un host con su stack de networking, gestor de paquetes y dependencias, memoria, cpu, kernel. A la hora de identificar alguna anomalía y/o redimensionar para escalar todo se torna mucho más sencillo.

Despliegue de OMniLeads sobre contenedores Docker

OMniLeads puede ser desplegado utilizando contenedores Docker, esto extiende la posibilidad de ejecución de la aplicación sobre diversas distrubuciones de GNU/Linux.

_images/install_arq_docker.png

Se distribuye con el proyecto el código para realizar un despliegue de OMniLeads sobre Docker Docker ProdEnv el cual se basa en un docker-compose.yml y una seria de archivos/scripts que permiten correr los componenetes (asterisk, kamailio, nginx, websocket y django App) como contenedores sobre una instancia de Linux, mientras que los componentes (RTPengine, PostgreSQL y Wombat Dialer) deben ser implementados sobre hosts Linux aislados.

Nota

El proyecto distribuye todos losd Dockerfile para generar las imágenes de los componenetes mencionados, además por supuesto las mismas se encuentran disponibles en docker hub , de manera tal que el usuario pueda disponer y orquestar las mismas de acuerdo a sus preferencias.

Archivo de inventario

El archivo de inventario es el componente fundamental en la instalación y administración (actualizaciones, cambios de passwords de componentes, clusterización, etc.) de la App. Es fundamental entender el mismo en su totalidad antes de avanzar con el despliegue de OMniLeads en cualquiera de sus posibilidades.