Escolha uma Página

Mais que um blog, uma fonte de insights.

Receba gratuitamente as atualizações em primeira mão!

Fique tranquilo, jamais divulgaremos seu e-mail!

Você que faz alguns projetos de Pentaho já sabe o checklist de deploy do Pentaho Server ou do Data Integration, né:

  • Prepara o sistema operacional;
  • Instala o servidor;
  • Instala as client-tools;
  • Copia arquivos JDBC e configura as conexões no Server e/ou Data Integration.
  • Instala os arquivos de projeto.

Um grande facilitador de deploys é o cbf2, que a gente vai tratar aqui no blog em outro momento. Esse carinha usa o docker pra subir um Pentaho com todos os arquivos do projeto.

Mas enquanto esse post não vem e também pra tratar de quem não usa Docker ou cbf2 em produção, existe uma dor de cabeça crônica pra agilizar deploys do ser projeto Pentaho em diferentes servidores.

Imagine que você tem um time de 2 desenvolvedores trabalhando num dado projeto, com cada um desenvolvendo offline e, de tempos em tempos entregando novas funcionalidades para servidores de Desenvolvimento e depois para Produção.

Isso requer, pelas nossas contas, 4 ambientes:

  • Notebook do Marcello;
  • Notebook do Leonardo;
  • Ambiente de Desenvolvimento;
  • Ambiente de Produção;

Os 4 ambientes tem que trabalhar idealmente com o mínimo de diferenças, para dar segurança na hora do deploy. A gente se utiliza de algumas práticas pra agilizar as implantações e tornar os ambientes mais parecidos:

  • Soluções entregues como plugins – falaremos disso também em outro post;
  • Todas as conexões utilizando JNDI (alias para JDBC);

É nas conexões que mora o assunto de hoje desse post. A gente vai falar sobre como é fácil agilizar a configuração de um ambiente utilizando o pentaho-connections-deploy da Oncase.

pentaho-connections-deploy

Esse utilitário permite você manter as definições dos ambientes em um arquivo e automatizar a criação e atualização de conexões no Pentaho Server e no Data Integration (em breve, pode funcionar também com Schema Workbench, Report Designer, etc) – inclusive copiando drivers JDBC para as ferramentas.

Para instalar no seu ambiente, basta utilizar no terminal:

npm install -g pentaho-connections-deploy

Depende de ter NodeJS instalado

O tipo de configuração que você mantém é organizado por máquina:

  • Computador do Marcello:
    • Caminho de instalação do PDI
    • Caminho de instalação do Pentaho Server
    • Informações sobre conexões (alias, SGBD, banco, url, senha, etc);
  • Produção
    • Caminho de instalação do PDI

A partir daí, em cada ambiente, se você quiser instalar ou atualizar alguma conexão (no PDI e no Server ao mesmo tempo), basta utilizar o comando:

pentaho-connections-deploy --config=./config.js --env=Producao

A ferramenta vai ler o seu arquivo de configuração e:

  • Copiar os arquivos JDBC para a pasta lib/ do seu Pentaho Server
  • Copiar os arquivos JDBC para a pasta lib/ do seu Data Integration
  • Criar/Atualizar as entradas JNDI da sua instalação do Data Integration;
  • Criar/Atualizar as conexões JDBC do seu Pentaho Server utilizando a API do servidor.

Uma distribuição possível dos arquivos, dentro do repositório, seria:

  • config/
    • connections/
      • config.js
      • connections.js
    • jdbc/
      • postgresql-9.3-1102-jdbc4.jar
      • sqljdbc42.jar
      • vertica-jdbc-8.0.1-0.jar

Indo na mesma pasta de config.js você poderia omitir o --config=:

pentaho-connections-deploy --env=Producao

Se você quiser mais informações sobre como utilizar, tem uma documentação mais detalhada em https://www.npmjs.com/package/pentaho-connections-deploy.

O repositório onde essa ferramenta está sendo mantido, é o https://github.com/oncase/pentaho-connections-deploy. Inclusive, como o projeto é open source, ajuda a gente se você encontrar alguma oportunidade de melhoria ou correção.

Conclusão

A gente tem adotado essa ferramenta em muitos dos nossos projetos e isso tem melhorado a nossa Dev Experience. A gente tem lutado dia-a-dia pra tornar o onboarding de novos membros entre projetos mais rápido. Acreditamos que temos que gastar menos tempo configurando e mais tempo desenvolvendo.

Marcello Pontes
Analytics Architect & Front-ender at | marcello@oncase.com.br