Skip to content

Repository files navigation

Consola de ETL

En este tutorial se explica el proceso a seguir para llevar a cabo el proceso de instalaci贸n de la aplicaci贸n. Se recomienda llevar a cabo una lectura r谩pida de todo el tutorial antes de comenzar con el proceso de instalaci贸n. Adem谩s, podr谩 encontrar otros anexos de utilidad en los que se detallan algunas cuestiones relacionadas con el desarrollo, los diferentes perfiles de compilaci贸n,...


Introducci贸n

Descripci贸n de la aplicaci贸n

Consola de ETL es una soluci贸n para registrar y ejecutar ficheros ETLs desarrollados mediante la tecnolog铆a Pentaho Data Integration, permitiendo incluso programar las ejecuciones de estos procesos y la revisi贸n de sus ejecuciones mediante un hist贸rico.

La aplicaci贸n est谩 basada en tecnolog铆as web est谩ndar (HTML5, CSS3, Javascript y Java, ver M谩s Informaci贸n). La implantaci贸n de la soluci贸n permite llevar a cabo las siguientes tareas:

  • Manejar los usuarios y roles con acceso a la aplicaci贸n.
  • Registrar, ejecutar y programar procesos ETL.
  • Revisar el hist贸rico de ejecuciones de un proceso ETL.

Requerimientos previos

Requisitos del entorno

En este apartado se especifican los requisitos necesarios, referidos al entorno, para que la aplicaci贸n funcione adecuadamente:

  • Apache Tomcat. 8.5
  • Java. 1.8.x
  • PostgreSQL. TODO

Dependencias

La aplicaci贸n requiere de determinados servicios para poder estar completamente operativa. Algunos de ellos son necesarios de manera directa y otros de manera indirecta: Los servicios necesarios de manera directa (son atacados directamente por la aplicaci贸n):

  • CAS. Se utiliza para llevar a cabo las labores de autenticaci贸n.
  • LDAP. Se utiliza para validar las credenciales de los usuarios.
  • Pentaho Data Integration Server. Se utiliza para ejecutar los procesos ETL desarrollados en Pentaho.

Componentes de la instalaci贸n

La plantilla consta de una aplicaci贸n con interfaz web y un servicio web REST.

Gesti贸n de roles y permisos

  • 馃毀 TODO

Procedimiento de instalaci贸n desde cero

Para arrancar el proyecto en desarrollo (dev) ver: Anexo. Desarrollo.

Paso 1. Configuraci贸n del entorno

  • Configuraci贸n del servidor de aplicaciones seg煤n los requisitos del entorno ya especificados.
  • Configuraci贸n de la base de datos.
    1. La aplicaci贸n cuenta con un mecanismo para llevar a cabo la gesti贸n de los cambios de base de datos de manera automatizada (liquidbase).
    2. A priori lo 煤nico que es necesario es crear en la aplicaci贸n el esquema de base de datos que se va a utilizar. El esquema debe recibir el nombre de "TODO".
    3. Por otra parte, ser谩 necesario que el usuario que use la aplicaci贸n tenga permisos para la creaci贸n de objetos sobre el esquema anterior.
    4. De esta forma la aplicaci贸n, en el momento de arrancar, llevar谩 a cabo la creaci贸n de todos los objetos que sean necesarios sobre la base de datos.

Paso 2. Despliegue en servidor de aplicaciones.

  • Ubicar el archivo *.war compilado con el perfil adecuado en el servidor de aplicaciones. Se pueden obtener m谩s detalles en el Anexo de perfiles de compilaci贸n.
  • Definir si se desea externalizar la configuraci贸n de la aplicaci贸n o mantener dentro del propio archivo war.
    1. Si no se desea externalizar la configuraci贸n de las propiedades a un directorio DATA se puede omitir este paso.
    2. Si se desea externalizar la configuraci贸n de las propiedades a un directorio DATA se tendr谩n que realizar los siguientes pasos:
      • Se har谩 una copia del archivo coetl.war/WEB-INF/classes/config/application-env.yml a un directorio externalizado de su elecci贸n.
      • Se editar谩 el archivo coetl.war/WEB-INF/classes/config/data-location.properties y se especificar谩 la ruta anterior.
  • Se cumplimentar谩n las propiedades del fichero application-env.yml. Se puede consultar el detalle sobre cada una de las propiedades en el Anexo de descripci贸n de propiedades de configuraci贸n.

Paso 3. Configuraci贸n de logging.

Pueden modificarse los ficheros relacionados con la configuraci贸n de logging en coetl.war/WEB-INF/classes/logback.xml.

Paso 4. Arrancar la aplicaci贸n.

Paso 5. Crear usuario administador

Para poder acceder a la aplicaci贸n es necesario dar de alta un usuario. A continuaci贸n, se enumerar谩n y explicar谩n los procesos a realizar para llevar a cabo esta tarea:

  1. Crear un usuario y asignarle un rol, para ello es necesario ejecutar la siguiente instrucci贸n SQL:

    -- Crea un usuario y se le asigna un rol existente
    SELECT add_usuario_with_existing_rol('RELLENAR_USUARIO_LDAP', 'RELLENAR_NOMBRE_USUARIO', 'RELLENAR_PRIMER_APPELLIDO_USUARIO', 'RELLENAR_SEGUNDO_APPELLIDO_USUARIO', 'RELLENAR_CORREO_ELECTRONICO_USUARIO', 'RELLENAR_CODIGO_ROL_EXISTENTE');

Una vez generado este usuario administrador (con todos los permisos), este tendr谩 los permisos necesario para dar de alta el resto de usuarios mediante la aplicaci贸n, en la secci贸n de Gesti贸n de usuarios.

Importante: Existe un fichero script SQL sobre el que basarse para realizar las acciones anteriores. Dicho fichero se encuentra en: etc/db/01-configuraciones/01-insercion-roles-y-usuarios.sql.


Procedimiento de actualizaci贸n desde versiones anteriores

Desde versi贸n 1.0.0 a 1.1.0

Desde la versi贸n 1.1.0 a 1.1.1

  • Modificar el valor de la siguiente propiedad, pentaho.endpoint. Ahora hay que a帽adir la ruta completa hasta el servidor Carte y el protocolo. Ejemplo, teniendo anteriormente la propiedad un valor ruta-carte-server/ ahora deber铆a ser http://ruta-carte-server/kettle/.

Anexo. Descripci贸n de las propiedades de configuraci贸n

  • spring.datasource.url
    • Cadena de conexi贸n a la base de datos.
  • spring.datasource.username
    • Nombre del usuario de conexi贸n a la base de datos.
  • spring.datasource.password
    • Password de conexi贸n a la base de datos.
  • spring.mail.host
    • Host del servidor para el env铆o del mail.
  • spring.mail.port
    • Puerto del servidor para el env铆o del mail.
  • spring.mail.username
    • Nombre del usuario para el env铆o del mail.
  • spring.mail.password
    • Contrase帽a del usuario especificado anteriormente.
  • jhipster.mail.from
    • Cuenta desde la que se quiere especificar que se env铆an los e-mails.
  • jhipster.mail.base-url
    • URL de acceso a la aplicaci贸n. Esta URL se usar谩 para enviarla por correo a los nuevos usuarios que sean dados de alta en la aplicaci贸n.
  • pentaho.endpoint
    • Endpoint donde se localiza el servidor de Pentaho
  • pentaho.auth.user
    • Usuario para conectar con el servidor Pentaho.
  • pentaho.auth.password
    • Contrase帽a del usuario del servidor Pentaho.
  • pentaho.host.os
    • Sistema operativo donde se ha instalado el servidor Pentaho, permite los valores UNIX (incluye Mac OS) o WINDOWS.
  • pentaho.host.address
    • Direcci贸n del sistema donde se ha instalado el servidor Pentaho.
  • pentaho.host.username
    • Usuario de conexi贸n al servidor donde se ha instalado el servidor Pentaho.
  • pentaho.host.password
    • Contrase帽a del usuario de conexi贸n al servidor donde se ha instalado el servidor Pentaho.
  • pentaho.host.sudoUsername
    • Usuario SUDO en el servidor donde se ha instalado el servidor Pentaho.
  • pentaho.host.sudoPassword
    • Contrase帽a del usuario SUDO en el servidor donde se ha instalado el servidor Pentaho.
  • pentaho.host.sudoPasswordPromptRegex
    • Expresi贸n regular para detectar la solicitud de password del usuario SUDO que se muestra en el PROMPT del servidor donde se ha instalado el servidor Pentaho, por ejemplo .*[Pp]assword.*::
  • pentaho.host.sftpPath
    • Ruta de subida de fichero al servidor donde se ha instalado el servidor Pentaho, por ejemplo /tmp.
  • pentaho.host.resourcesPath
    • Ruta donde se encuentran los ficheros de recurso adjuntos de las ETLs en el servidor donde se ha instalado el servidor Pentaho, ejemplo /servers/pentaho/data-integration/resources.
  • pentaho.host.ownerUserResourcesPath
    • Usuario propietario de la ruta donde se encuentran los ficheros de recurso adjuntos de las ETLs en el servidor donde se ha instalado el servidor Pentaho.
  • pentaho.host.ownerGroupResourcesPath
    • Grupo propietario de la ruta donde se encuentran los ficheros de recurso adjuntos de las ETLs en el servidor donde se ha instalado el servidor Pentaho.
  • application.cas.endpoint
    • Endpoint donde se localiza el CAS.
  • application.cas.service
  • application.cas.login
    • URL a la que se debe acceder para realizar la acci贸n de login. S贸lo debe cumplimentarse en el caso que su valor sea distinto a application.cas.endopoint+ '/login'.
  • application.cas.logout
    • URL a la que se debe acceder para realizar la acci贸n de logout. S贸lo debe cumplimentarse en el caso que su valor sea distinto a application.cas.endopoint+ '/logout'.
  • debug
    • Permite aumentar el nivel de log a DEBUG.
  • application.ldap.url
    • URL del servidor LDAP. Ejemplo: ldap://ldap.miorganizacion.com
  • application.ldap.username
    • Usuario que se usa para conectarse al servidor LDAP. Ejemplo: cn=username,dc=miorganizacion,dc=com
  • application.ldap.password
    • Contrase帽a del usuario LDAP.
  • application.ldap.base
    • Ruta relativa d贸nde se realizar谩n las operaciones. Ejemplo ou=usuarios,dc=miorganizacion,dc=com
  • application.ldap.searchUsersProperty
    • Propiedad de LDAP por la que se buscar谩 el usuario mediante su username. Valores admitidos: sAMAccountName, cn, uid
  • application.installation.type
    • Propiedad para indicar el tipo de instalaci贸n de la aplicaci贸n, permite dos valores (INTERNAL / EXTERNAL). Dependiendo del valor elegido la aplicaci贸n tendr谩 un estilo y nombre de aplicaci贸n diferente. En caso de seleccionar INTERNAL la aplicaci贸n se mostrar谩 como "Consola de ETL - Gesti贸n", en caso contrario ser谩 "Consola de ETL".

Anexo. Perfiles de compilaci贸n

La aplicaci贸n se compila con Maven, por lo que para poder compilar la misma debemos tener instalado en nuestro entorno esta herramienta.

A la hora de compilar la aplicaci贸n podemos especificar un perfil. En funci贸n del perfil que especifiquemos, la aplicaci贸n se compilar谩 para ser instalada en un servidor de aplicaciones real, o para ser usada en un entorno de desarrollo.

Existen dos perfiles de compilaci贸n que podemos especificar seg煤n el entorno: dev para entorno de desarrollo y env para entornos de producci贸n.

En la aplicaci贸n existir谩 un archivo general application.yml en el que se ubicar谩n todas las propiedades de configuraci贸n comunes a todos los perfiles y que rara vez se editan.

Para configurar cada entorno, tambi茅n existir谩n archivos espec铆ficos con las propiedades que pueden ser modificadas por el usuario y dependientes del entorno, teniendo as铆 un fichero application-env.yml para configurar las propiedades del entorno de producci贸n, y un application-dev.yml para el entorno de desarrollo.

Cuando compilemos el proyecto, se usar谩 una configuraci贸n u otra en funci贸n del perfil indicado durante la compilaci贸n. Hay que tener en cuenta que, en el caso de que una misma propiedad exista tanto en el fichero general application.yml como en el dependiente del entorno, tendr谩 preferencia el valor configurado en el fichero de configuraci贸n del entorno.

Para proceder a instalar la aplicaci贸n en un servidor de aplicaciones, debemos compilar la misma con el perfil de producci贸n. Sin embargo, si vamos a proceder a modificar la aplicaci贸n en nuestro entorno de desarrollo, bastar谩 con que compilemos la aplicaci贸n con el perfil de desarrollo.

Para compilar el proyecto con el perfil de producci贸n es necesario ejecutar lo siguiente:

mvn clean install -Penv

Por otro lado, para compilar el proyecto con el perfil de desarrollo es necesario ejecutar:

mvn clean install -Pdev

Por defecto, si no se especifica un perfil, la aplicaci贸n se compila con el perfil de desarrollo dev.

Hay que tener presente que si la aplicaci贸n se compila con el perfil de desarrollo, para terminar de construir la misma y poder ejecutarla es necesario seguir los pasos descritos en el Anexo de desarrollo.

Anexo. Desarrollo

A continuaci贸n se describen los pasos a seguir para configurar el entorno de desarrollo sobre el cual podamos arrancar y modificar la aplicaci贸n.

En primer lugar, tal y como se describe en el Anexo Perfiles de compilaci贸n, debemos compilar la aplicaci贸n con Maven. Para trabajar en un entorno de desarrollo, basta que la compilemos con el perfil dev.

Servidor (BackEnd)

  1. Clonar el repositorio en local, ya sea l铆nea de comandos o usando herramientas de gesti贸n de git como Sourcetree o Fork.
  2. Importar el proyecto como proyecto Maven al IDE ( Eclipse o IntelliJ ).
    1. En caso de usar el IDE IntelliJ quiz谩s sea necesario realizar (IMPORTANTE: primero arrancar sin esta l铆nea):
     Preferences >> Build,Execution, Deployment >> Compiler
      User-local build process VM options (overrides Shared options): -Djps.track.ap.dependencies=false
  3. Crear la base de datos en Docker. ####Base de datos COETL
      docker container create --publish 5432:5432 --name coetl_dev -e "POSTGRES_USER=coetl" -e "POSTGRES_PASSWORD=coetl" -e "POSTGRES_DB=dev"  postgres:9.6.2
    ####Base de datos METADATA
    1. Crear una nueva base de datos: metadata. Aqu铆 se configurar谩n todas las propiedades de configuraci贸n.
    2. Scripts de creaci贸n
    3. Inserts espec铆ficos de COETL
    4. En la propiedad de metamac metamac.coetl.db.password, se debe encritpar la contrase帽a con metamac-core-common-5.5.1-security.jar
    java -jar metamac-core-common-5.5.1-security.jar [password = docker container property POSTGRES_PASSWORD=]
    1. En la propiedad de metamac metamac.coetl.cas.service = http://localhost:9000/login/cas
  4. A帽adir configuraci贸n de la base de datos de metamac en el application-dev.yml *(Los datos del puertos o nombre pueden variar)
         environment:
             edatos:
                 configuration:
                     db:
                         driverName: org.postgresql.Driver
                         url: jdbc:postgresql://localhost:5432/metadata
                         username: coetl
                         password: [generated password with metamac-core-common-5.5.1-security.jar]
  5. Arrancar la parte servidora de la aplicaci贸n. Esto lo podemos hacer ejecutando la clase CoetlApp.

Cliente (FrontEnd)

A continuaci贸n, para terminar de construir la aplicaci贸n, es necesario instalar las siguientes dependencias:

  1. Node.js: Lo usamos para levantar un servidor de desarrollo y construir el proyecto.

  2. Yarn: Lo usamos para manejar las dependencias de Node.

**Nota : Es importante comprobar la versi贸n de node.js y yarn que es necesaria para este proyecto

Instalaci贸n de Node.js y Yarn

Node

Para este caso puede ser de utilidad tener instalado nvm para la gesti贸n de versiones de node.js.

Instalaci贸n de nvm ver: Art铆culo Medium usando nodejs con nvm

nvm ls   --> Listado de las versiones de node que se tiene y cu谩l se est谩 usando.
nvm install 6.11.5   // 贸 //  nvm use 6.11.5

Yarn

npm install --global yarn@0.27.5

Estas herramientas nos permitir谩n trabajar de forma sencilla con los ficheros y las dependencias de la capa cliente de la aplicaci贸n (JavaScript).

El siguiente paso es instalar las dependencias que se necesitan para trabajar con JavaScript en el proyecto. Para ello debe ejecutarse el comando Yarn

Generalmente este comando solo es necesario ejecutarlo cuando modifiquemos las dependencias especificadas en nuestro proyecto (fichero package.json).

Realizados los pasos anteriores, podemos proceder a arrancar la aplicaci贸n en "modo desarrollo". Para ello necesitamos:

  1. Arrancar la parte servidora de la aplicaci贸n. Esto lo podemos hacer ejecutando la clase CoetlApp. Al ejecutar esta clase estamos levantando un servidor Tomcat embebido. Este Tomcat embebido nos permite desarrollar de forma m谩s r谩pida y eficiente.

  2. Ejecutar el siguiente comando de yarn:

    yarn start

Este comando arranca la parte cliente de la aplicaci贸n. Al ejecutar yarn start se abrir谩 una ventana en el navegador con la aplicaci贸n. Por defecto, la aplicaci贸n estar谩 disponible en la URL http://localhost:9000.

A continuaci贸n, podemos comenzar a modificar los ficheros que deseemos en la aplicaci贸n. Si modificamos alg煤n fichero de la parte servidora de la aplicaci贸n (ficheros Java y ficheros de configuraci贸n), debemos reiniciar el servidor Tomcat embebido que hemos levantado. Si modificamos alg煤n fichero de la parte cliente de la aplicaci贸n (ficheros TS, CSS, HTML...), la aplicaci贸n se recargar谩 de forma autom谩tica y podremos ver dichos cambios aplicados de forma inmediata en el navegador.

Ejecuci贸n de tests

En la aplicaci贸n se han incluido una serie de tests que permiten probar todas las funcionalidades incluidas.

Hay tests solo en la parte servidora. Son tests de JUnit y est谩n ubicados en src/test/java/. Pueden ejecutarse mendiante Maven:

mvn clean test

M谩s informaci贸n

La base de la aplicaci贸n ha sido generada usando JHipster 4.6.2. Puede consultarse m谩s informaci贸n en la p谩gina oficial.

About

ETL Console is the Canary Islands Government's corporate solution for registering and executing ETL files developed using Pentaho Data Integration technology

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages