No post anterior eu comentei sobre as possibilidades que existem para melhorar a produtividade de um projeto de BI. Especificamente, falei de ferramentas que automatizam diversas tarefas, como testar o projeto e configurar ambientes.

O idéia para essa discussão veio de um livro que eu acabei de ler:

Creating Development Environments with Vagrant, pela Editora Packt.
Creating Development Environments with Vagrant, pela Editora Packt.

Acredito que a Packt dispensa apresentações – é uma das mais prolíficas editoras técnicas do mundo, com centenas de títulos, sobre os mais variados assuntos técnicos. Oferecem de livros sobre PHP a vídeos sobre BI, passando por “livros de receitas” (cookbooks) sobre tudo quanto é assunto – robótica, linguagens de programação, BPMS, BI (90% dos livros de Pentaho no mercado são deles), quase todos os Softwares Livres (ao menos quase todos daqueles que se estabeleceram) e muitos softwares propritetários, uma lista interminável. Todos de alta qualidade, excelente acabamento e muito cuidado na edição. Ou seja, se eles tiverem o livro que você precisa, compre. Dificilmente você vai encontrar algo tão bom quanto ou melhor.

Foi neste livro que eu comecei a entender as atividades de GCS que existem em um projeto de BI, e como elas tomam tempo. Vou falar um pouco sobre o conteúdo do livro e depois mostrar exemplos de como as coisas funcionam.

Resenha Creating Development Environments with Vagrant

Este é um daqueles livros da Packt que se encaixam na categoria de hands on. Há exercícios e coisas para fazer desde o início, sempre embasado com uma explicação que contextualiza a atividade e mostra os caminhos que existem a partir dali. Vamos por partes:

  • O livro tem sete capítulos e um apêndice, fora as partes que fazem o padrão Packt (prefácio, acesso ao material do livro, sobre o autor etc.)
  • Os sete capítulos tratam de como usar o Vagrant, e o apêndice mostra um exemplo completo, passo-a-passo, de como montar um servidor LAMP.

Os capítulos são os seguintes (os títulos são traduções livres, sem relação com o nome original:)

  1. Introdução: a idéia de ambientes de desenvolvimento é debatida, e o conceito do Vagrant é apresentado. Na prática esse capítulo apenas prepara o caminho.
  2. Gerenciando boxes Vagrant: neste capítulo efetivamente aprendemos a criar uma “caixa” (ou box) Vagrant, que é a gíria para máquina. Ele é auto-suficiente o bastante para que os apressadinhos pulem o capítulo 1 e caiam diretamente aqui (desde que tenham instalado o VirtualBox e o próprio Vagrant;)
  3. Puppet: o Puppet é um aplicativo para gerenciamento e “patrulhamento” (enforcement) de configuração. Por assim dizer, podemos controlar o ambiente de uma máquina inteira apenas descrevendo o que ela deve conter em termos de softwares e arquivos. Um dos usos do Puppet é garantir que uma máquina não tenha sua configuração alterada: se alguém apagar ou mudar algo, ou adicionar um novo programa, o Puppet vai lá e reseta a máquina para o estado definido;
  4. Chef: igual ao capítulo anterior, mas agora com um “concorrente” do Puppet, o Chef;
  5. Vagrant com provisionadores: provisionador é o nome genérico de softwares como Puppet e Chef. Este capítulo mostra como usar o Vagrant para acionar os provisionadores vistos nos capítulos anteriores e conseguir uma máquina tal qual desejarmos;
  6. Multimáquinas: até o capítulo 5 é mostrado como construir ambientes com uma só máquina virtual. Claro que se parasse ali seria muito pouco, pois não raro temos ambientes com uma máquina para cada pedaço do sistema. Aqui vemos justamente como construir um ambiente de desenvolvimento com mais de um servidor, aproveitando a capacidade de rede virtual fechada do VirtualBox;
  7. Uma caixa para chamar de sua: até aqui livro inteiro mostrou como usar boxes pré-fabricadas, mas um dos recursos básicos e mais importante do Vagrant é a capacidade de criar um padrão de máquina. No último capítulo do livro aprendemos como construir uma máquina adequada ao nosso ambiente e exportá-la, tal que possa ser usada em qualquer outro projeto.

The Good

Gostei da organização do livro. Na minha opinião, ele consegue manter um equilíbrio no ritmo de apresentação de funcionalidades com conceitos, e nunca pressupõe que você saiba algo que seja importante para avançar. Tanto é assim que os capítulos 3 e 4 são completamente dedicados a ferramentas que, por si só, já merecem outro livro. Mesmo assim ele não se perde em coisas desnecessárias, nem corta o assunto pela metade, sempre apresentando o necessário para aproveitamento do Vagrant e indicando como se aperfeiçoar, ou destacando o que é mais importante ou menos.

Também gostei muito da prosa do autor. Ele não é prolixo, floreando demais, nem é seco a ponta das frases ficarem telegráficas. Isso, aliás, é um traço dos livros da Packt: raramente vemos um texto tacanho ou enfadonho. Alguns são difíceis, mas difilmente mal-escritos.

Se você não tem muito tempo, os dois primeiros capítulos já matam o essencial. Eles te dão uma visão encorajadora do assunto e mostram exemplos fáceis, que servem para despertar o gostinho pela coisa, enquanto apresenta os comandos mínimos e o passo-a-passo para criar e subir seu primeiro ambiente. Só com isso já para arquitetar sua vida.

The Bad

Bom, como dizer? Há uma grande diferença entre entender como funciona e realmente fazer funcionar. “Ah, uma máquina Pentaho é um Ubuntu, com Java 7, Postgres e o BA Server.” Simples, não? Para entender como criar a máquina é suficiente ir até o capítulo 2. Para conseguir que ela tenha Postgres, por exemplo, um pouco de Puppet/Chef resolve. Mas é só falar de colocar Java, e depois o BA Server, que tudo começa a cair em casos especiais.

Trocando em miúdos, há um bom aprendizado de Puppet/Chef no meio do caminho até você conseguir produzir, sozinho, um servidor Pentaho básico. Ou seja, se por um lado o livro cobre bem Vagrant, chegando a ambiente multi-máquinas e criação de boxes próprios, por outro é preciso bem mais que Vagrant para esculpir um ambiente adequado, que dizer otimizado.

The Ugly

Eu gostei muito do livro. Raramente eu me enamoro por tecnologias de infra-estrutura, mas o Vagrant é tão bacana que é impossível – IMHO – não gostar dele. E como o livro é bem escrito e bem-feito, também seus problemas não são um incômodo.

E quais são esses problemas?

Em primeiro lugar ele abre muitos caminhos paralelos para tratar de cada assunto. Por exemplo, quando ele começa a criar o primeiro ambiente, ele não vai até o final e sobe tudo, mas sim discorre sobre os aspectos mínimos de cada configuração, comando, opções etc. Como eu disse, isso não chega a atrapalhar – não quebra o ritmo da leitura, nem prejudica a compreensão. Mas eu sou um cara mais linear, que gosta de ir até o fim em cada trilha, e depois percorrer os caminhos laterais. Coisa de macaco velho de RPG, que evita sair mergulhando no primeiro desvio e faz tudo sistematicamente (não sobrevivi a quase todos os Final Fantasy, Chrono Trigger e Dragon Quest correndo que nem um louco. ;-) )

Em segundo lugar, ele ensina sobre o Vagrant, e até bastante sobre o Vagrant. Só que é preciso saber mais coisas para preparar um bom servidor. Por exemplo, como é que instalamos e configuramos um programa qualquer? Resposta: usando o Puppet/Chef apt-get etc. E um Java? Uma configuração? Ou uma ação menos ortodoxa? O livro poderia trazer algumas receitas mais banais, para que o vagranteer incipiente não precise continuar estudando um bocado até começar a se virar. Só para comentar como isso afeta o meu caso especificamente (Pentaho), basta notar que o livro dá uma boa visão de gestão de usuários e grupos nas máquinas virtuais, mas não tão boa na parte de transferência e alteração de arquivos. Como muito das configurações do Pentaho BA Server são feitas por arquivos, eu vou ter que estudar mais para conseguir o mínimo.

Resumindo, e isso não é falha do livro, um uso proficiente do Vagrant requer um certo conhecimento paralelo, que não é muito fácil de conseguir. Uma melhoria interessante para a segunda edição seria entregar um pouco mais, como algumas “receitinhas”-padrão com Puppet/Chef. (Quanto aos caminhos meio tortuosos, podem não ser o máximo, mas não atrapalham. Eu deixaria como está.)

Ambiente Pentaho BA Server com Vagrant

Claro que eu não poderia terminar o post sem contar como foram minhas experiências com o Vagrant. E eu conto: foi muito boa. As coisas aconteceram exatamente como o livro mostrou – mais um ponto para ele! – e eu não fiquei perdido, como normalmente fico quando vou aprender alguma coisa nova do zero. Comparado com meu aprendizado do Git, por exemplo, foi muito mais fácil!

A porca torceu o rabo, porém, quando eu comecei a tentar titerear meu ambiente.


Titereiro(a) é a pessoa que mexe os fantoches – puppets – por meio de cabos e travessões. O ato de controlar as marionetes é chamado de titerear.


Falando claramente, me enrolei todo quando eu tentei escrever um script Puppet (scrupet?? kkkk.) No final das contas eu desisti e apelei o bom e velho vagrant ssh, acessando a máquina e instalando tudo na mão. Obviamente essa é a maneira mais burra de se gerenciar o ambiente Vagrant, mas deu para ter um gostinho de como pode ser.

A empresa que cuida do Vagrant, HashiCorp, oferece um repositório de caixas prontas. É um tributo à elegância do Vagrant o fato de que basta executar vagrant init com o nome do box e depois vagrant up para o programa fazer tudo sozinho. Já existe até mesmo dois ambientes Pentaho: Pentaho 4.8 e Pentaho 5.4. Eu tentei testá-los, mas não tive tempo até o fechamento deste post. No próximo post trarei minha experiência completa de configuração de um Pentaho BI Server 5.4 com Vagrant.

Conclusão

Vagrant é uma ferramenta muito bacana e com potencial para melhorar muito a qualidade do seu processo de desenvolvimento, seja de soluções de BI, seja de softwares tradicionais. A Packt oferece um excelente livro para isso, o Creating Development Environments with Vagrant.

Com o que o livro ensina eu consegui montar um ambiente Pentaho BI Server. Ainda não é o melhor servidor, porque, para conseguir isso, eu precisaria aprender ao menos um pouco sobre outra ferramenta: um provisionador chamado Puppet (ou Chef, mas eu gostei mais do Puppet.) Outro livro da Packt ajudaria: Puppet 3: Beginner’s Guide.

Puppet 3: Beginner’s Guide.
Puppet 3: Beginner’s Guide.

Aliás, eles oferecem vários sobre Puppet. Você pode consultar este artigo, da própria Packt, para algumas opções.

Existe um outro livro sobre Vagrant, mas de outra editora: Vagrant: Up and Running

Este livro é recomendado diretamente do site do Vagrant.
Este livro é recomendado diretamente do site do Vagrant.

Sabe brinquedo novo? Então, estou me sentindo assim com o Vagrant, tanto que estou dando um tempo na Soluções Clássicas! :-D

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s