Migración desde CentOS7

Migrando OMniLeads desde CentOS-7 🔄

Desde los inicios del Proyecto, las instalaciones se han basado en sistemas operativos CentOS7. Sin embargo, dada su pronta fecha de expiración (end-of-life), el equipo de OMniLeads ha trabajado arduamente para soportar sistemas operativos modernos como Ubuntu Server, Debian Server, Rocky Linux, entre otros.

A partir de la adopción de una Arquitecturas basada en Contenedores y métodos de instalación totalmente automatizados, las tareas de Administración y Mantenimiento IT se han simplificado de manera significativa debido a la clara abstracción de las dependencias de capas subyacentes.

Para lograr una correcta migración desde una instancia OMniLeads en CentOS7 hacia su arquitectura basada en contenedores, es necesario realizar un Fresh Install de OMniLeads sobre otro host (o grupo de hosts según el método de instalación involucrado) asegurando que las variables listadas en el inventory.yml deben tener la necesaria correspondencia con su contraparte en la instancia de CentOS7. A saber:

  • ami_user

  • ami_password

  • postgres_password

  • postgres_database

  • postgres_user

  • dialer_user

  • dialer_password

IMPORTANTE: Para el procedimiento, debemos considerar que la versión de la imágen de Postgres a desplegar con OMniLeads debe ser "omnileads/postgres:230624.01". Por lo tanto, se debe agregar el siguiente cambio en la variable de groupvars_all/all inherente al servicio:

#################### containers img tag  ################################

#postgres_img: docker.io/postgres:14.9-bullseye
postgres_img: docker.io/omnileads/postgres:230624.01

En OMniLeads sobre CentOS7, se debe ejecutar el siguiente comando a los efectos de obtener el backup de archivos correspondientes. Es importante aclarar que el backup resultante será subido al correspondiente Object Storage que la nueva instancia de OMniLeads utilizó en su despliegue "fresh":

export NOMBRE_BACKUP=some_file_name
pg_dump -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} -Fc -b -v -f /tmp/${NOMBRE_BACKUP}.sql -d ${PGDATABASE} --no-acl
export AWS_ACCESS_KEY_ID=$your_new_instance_bucket_key
export AWS_SECRET_ACCESS_KEY=$your_new_instance_bucket_secret_key
export S3_BUCKET_NAME=$your_new_instance_bucket_name

Como hemos visto en la sección de Backups, el objetivo sería poder restaurar los backups de audios personalizados, audios telefónicos, backup de base de datos, etc, sobre el nuevo deploy de OMniLeads.

Para migrar la información a un OMniLeads bajo el método de instalación AIO, exportamos la variable de S3_ENDPOINT como se muestra a continuación:

export S3_ENDPOINT=http://$OML_AIO_IP:9000 

Para el caso de un OMniLeads bajo el método de instalación AIT (cluster), exportamos la variable de S3_ENDPOINT de la siguiente manera:

export S3_ENDPOINT=http://$OML_DATA_IP:9000 

Si en cambio, se decide por utilizar un Object Storage Externo, el dato lo deberemos obtener desde el proveedor correspondiente:

export S3_ENDPOINT=https://$object_storage_url 

Finalmente, procedemos a subir todos los backups desde OMniLeads sobre CentOS7 jacia el Bucket definido en el paso anterior:

aws --endpoint ${S3_ENDPOINT} s3 sync /opt/omnileads/media_root s3://${S3_BUCKET_NAME}/media_root
aws --endpoint ${S3_ENDPOINT} s3 sync /opt/omnileads/asterisk/var/spool/asterisk/monitor/ s3://${S3_BUCKET_NAME}
aws --endpoint ${S3_ENDPOINT} s3 cp /tmp/pgsql-backup-$NOMBRE_BACKUP.sql  s3://${S3_BUCKET_NAME}/backup/

Restaurando la información

debemos modificar los últimos dos parámetros del inventory.yml correspondiente a nuestra carpeta de tenants. Ésto último es necesario para indicar que el bucket no maneja certificados confiables, y para configurar el timestamp del backup a restaurar:

restore_file_timestamp: $NOMBRE_BACKUP 

De esta manera, ejecutando el siguiente script con la action "restore", se procederá a reinstaurar el backup tomado en el paso previo sobre la nueva instancia desplegada y contar asi con un ambiente migrado:

./deploy.sh --action=restore --tenant=<tenant-folder>

Ahora, se debe revertir a la imágen original de Postgres, lo cual implica restabelcer el contenido de group_vars/all a su estado previo:

#################### containers img taf  ################################

postgres_img: docker.io/postgres:14.9-bullseye
#postgres_img: omnileads/postgres:230624.01

Finalmente, ejecutamos el upgrade:

./deploy.sh --action=upgrade --tenant=$your_inventory_folder_name

Personalizaciones de Asterisk Dialplan

OMniLeads se basa en contenedores (imágenes), por lo tanto todo cambio de código efectuado dentro del container es "efímero".

Para dotar al sistema de modificaciones permanentes (dialplan, scripts, configuraciones particulares), se recomienda utilizar imágenes personalizadas. Un ejemplo de cómo lograr dicho objetivo se expone en el siguiente repo.

Para mayor información, sugerimos visitar la documentación expuesta en el repositorio oficial del proyecto.

Última actualización