Herramientas para personalización de instalaciones

 En el proceso de desarrollo con GeneXus, surge la necesidad de personaliza archivos en el momento de la instalación cuando se quiere instalar la misma versión para diferentes clientes o en diferente infraestructura. 


En el pasaje a producción, en algunos ambientes se puede utilizar la personalización a través de variables de ambientes (por ejemplo con Docker / Kubernetes) pero en otros ambientes esto no es una posibilidad válida, y hay que cambiar archivos de configuración para lograr que todo funcione correctamente. 

Algunas de las cosas que es necesario personalizar son los siguientes archivos

  • web.config  y client.exe.config
  • client.cfg
  • PDFReport.ini
  • CloudServices.config
  • rewrite.config
  • log.config y log.console.config
  • log4j.xml
  • connection.gam
  • dockerfile
  • web.xml
  • appsettings.json
Con seguridad me faltan varios mas. 

El formato de estos archivos es variado (xml, json, txt, ini) y por lo tanto las herramientas que usamos para hacer su personalización también varia. 

La personalización puede hacerse con una sustitución de archivos completa o con una modificación de algunas líneas del mismo. Esto es necesario cuando necesitamos por ejemplo la ultima version que sale de la KB del web.config, pero queremos modificar a que base de datos, usuario y password se conecta. 

En ese caso, hay  que tener una herramienta que permita sustituir parte del archivo xml por otra parte. 
También debe agregar esa texto, en caso que no exista la entrada correspondiente en el archivo. 
Como son archivos que pueden tener jerarquía o anidaciones, estas sustituciones o agregados no son triviales. 

A lo largo de los años, hemos ido acumulado algunas herramientas para hacer la tarea de la personalización de archivos para producción y están especializados por formato. 

IniFile  - Edición batch de archivos INI


Es útil por ejemplo para el client.cfg

Ejemplo que cambia en la sección del ini de DataStore DEFAULT, el usuario y si no esta lo agrega. 

INIFILE client.cfg [com.name|DEFAULT]] USER_ID=Elj20MqY44RPdvT8FEpDD0==

jq - Edición batch de archivos json


Esto es útil por ejemplo para personalizar el appsettings.json

jq '.Connection-Default-User = "Elj20MqY44RPdvT8FEpDD0=="' appsettings.json > new_appsettings.json

Es muy poderoso y la sintaxis no es trivial, pero hace su trabajo. 

fnr para archivo de texto


Cuando se tiene un archivo de texto y se quieren hacer sustituciones de búsqueda sencilla o usando  expresiones regulares, se puede usar fnr

ctt para xml 


Esta herramienta es útil para cambiar el web.config, client.exe.config, rewrite.config, log.config, log.console.config, etc. 

Necesita archivos de configuración de las transformaciones, en xml, que es un poco pesado, pero no es difícil de programar. El ejemplo de abajo, sustituye el executionTimeout y le pone 1800 en el web.config



Estas herramientas nos ayudan a que lo que instalamos en producción tenga siempre los mismos valores en algunas secciones críticas de la configuración. 

Comentarios

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.