HE:labs

Postado por Sylvestre Mergulhão em 05/03/2013

Seu ambiente de trabalho mais limpo usando Vagrant

Cada projeto tem suas peculiaridades. Alguns precisam apenas de um banco de dados para rodar e outros precisam de uma série de serviços adicionais como redis ou sphinx. Instalar todos esses serviços diretamente no sistema operacional é uma opção, mas com o tempo a erosão atua e por muitas vezes os serviços ou o próprio sistema começam a apresentar problemas.

Os serviços e o sistema sofrem erosão

Um exemplo bem simples de erosão ocorreu comigo há alguns dias. Fazia muito tempo que não rodava um projeto que usasse o mongodb como banco de dados.

Quando precisei, percebi que o serviço não estava no ar. Avaliando os logs do sistema descobri que a cada 10 segundos o sistema tentava subir o serviço, mas por algum motivo ele dava um segmentation fault. O motivo do problema pode ter sido algumas das dezenas de atualizações feitas no sistema operacional e que podem ter atualizado uma biblioteca qualquer para uma versão incompatível com a versão do mongodb que estava instalada.

Esse problema poderia estar acontecendo há meses, sem que eu percebesse. Não só influenciando no serviço específico, mas também degradando o sistema operacional como um todo.

Vagrant como fornecedor de serviços

Algumas pessoas utilizam o Vagrant como ambiente completo de desenvolvimento. Eu estou feliz com o ambiente que tenho no Mac OSX, me dou bem com o brew e não tenho interesse em desenvolver dentro de uma máquina Linux. Nem mesmo por questões de compatibilidade. Nos dias de hoje são mínimas as diferenças e os problemas que podem ocorrer por desenvolver num ambiente e rodar em outro.

Minha proposta é utilizar o Vagrant como fornecedor de serviços para o ambiente de desenvolvimento. Através da funcionalidade forward_port do Vagrant é possível rodar um serviço dentro da VM e mapeá-lo para uma porta da máquina host. Isso é perfeito.

Baseado nessa proposta eu criei uma box para o Vagrant que roda Ubuntu Precise 64 com postgresql 9.1 e mapeia a porta 5432 (usada normalmente pelo postgresql) do host para dentro da VM. Isso tem o mesmo efeito de ter o postgresql rodando nativamente e fica transparente para qualquer projeto.

Para mais informações veja: https://github.com/mergulhao/vagrant-precise64-postgresql

Boxes para outros serviços

Por enquanto foi só isso que eu precisei, mas a ideia é criar um box desse para cada tipo de projeto que precise de serviços específicos.

Até o próximo!

Comentários
Included file post/disqus_thread.html not found in _includes directory