PostgreSQL Deployment

Como es sabido, PostgreSQL implementa un script de fisrt_boot_installer.tpl, que puede ser invocado utilizando tecnología de provisioning, o bien ser ejecutado manualmente con una previa parametrización de las variables implicadas.

Para obtener nuestro script, se debe lanzar el siguiente comando:

curl https://gitlab.com/omnileads/omlpgsql/-/raw/master/deploy/first_boot_installer.tpl?inline=false > first_boot_installer.sh && chmod +x first_boot_installer.sh

So, once we have the script, we move on to work on the variables, removing comments and setting their values ​​inside the script. We are going to list and explain each of these variables that should be set before running the script.

Installation Variables

  • oml_infras_stage: Se refiere al proveedor de infraestructura implicado. La idea es aprovechar las APIs de los proveedores cloud para determinar cuestiones como parámetros de la red. Si vamos a instalar OnPremise o en alguna nube que no está dentro del listado, asignar onpremise como valor para la variable. Posibles valores: onpremise, aws, digitalocean, vultr, linode.
  • oml_nic: Aquí debemos indicar la interfaz de red sobre la que se levantará el puerto TCP 5432 que va a procesar las solicitudes de conexión provenientes de Asterisk y OMLApp.
  • oml_pgsql_release: Aquí debemos indicar qué versión del componente se desea desplegar. Para ello, se deberá revisar el archivo .gitmodules de la versión de OMniLeads que se desee desplegar, y tomar el parámetro branch del componente, como valor de ésta variable.
  • oml_db_name, oml_db_user, and oml_db_password: Here we quote 3 parameters, which are the name of the database that will host all the necessary tables, the user and the password allowed to access the database.
  • oml_pgsql_blockdev: Aquí se indica el nombre del disco o partición exclusiva que se desea montar sobre el filesystem, para utilizar como directorio donde se ubicarán las bases de datos PostgreSQL, es decir a donde se va a montar el path /var/lib/pgsql. El hecho de utilizar un dispositivo/partición aquí, tiene sentido si es que PostgreSQL va a convivir con OMLApp en el mismo Linux host. Posibles valores: NULL, /dev/….
  • PRIVATE_IPV4 and IPADDR_MASK: These default parameters should remain commented. They should only be enabled if for some reason, the script fails to determine IPv4 address and subnet mask through oml_nic inspection. The idea is that PGSQL opens its connections on one IPv4 and subnet.

Con respecto a las variables implicadas para un despliegue en Alta Disponibilidad (HA), las mismas vienen comentadas por defecto. En caso de desplegar en HA, se deberán descomentar y completar:

  • oml_deploy_ha: En caso de desplegar un cluster de PostgreSQL, se debe indicar true.
  • oml_ha_rol: Se indica si el nodo PostgreSQL a desplegar va a ser main o backup.
  • oml_ha_vip_nic: Se indica la interfaz de red sobre la cual se levantará la VIP.
  • oml_ha_vip_main y oml_ha_vip_backup: Éstas son las direcciones IP virtuales que cada nodo va a tomar, dependiendo de su rol y el estado del otro nodo.

Installation Execution

Finally, we can launch our script first-boot-instaler.sh. This can be done as user_data of a cloud instance, through some command line utility to manage the infrastructure, or directly copying the file to the destination Linux host and launching the execution of it.

Una vez ejecutado el script y finalizado el deploy, debemos comprobar que el componente se encuentra operativo, lanzando el siguiente comando:

systemctl status postgresql-11
_images/install_pgsql_status.png

Important

¡Es importante asegurarnos de que PostgreSQL abra su puerto (5432 por defecto) sobre una dirección de red privada! Es decir, NUNCA debemos instalar éste componente sobre una IP pública.