Vagrant - ambientes de desenvolvimento configuráveis(){
Software Livre

Por: Yassin Nurmahomed


Logo Vagrant

Logo Vagrant

Configurar ambientes de desenvolvimento de software pode ser uma tarefa complexa. É necessário saber qual é o SO, pacotes, bibliotecas e outros programas necessários para a aplicação que desejamos desenvolver. Quando se trabalha em equipe esta tarefa torna-se ainda mais complicada pois cada programador está acostumado a usar o seu próprio ambiente. O tempo gasto para se configurar o ambiente de cada um ou para se acostumar ao novo ambiente poderia ser melhor aproveitado se concentrando em desenvolver aplicação.

O ideal seria ter alguma maneira de configurar ambientes automaticamente, de maneira uniforme e independente do sistema operacional e outros programas instalados.

O Vagrant é uma ferramenta que permite criar e configurar ambientes de desenvolvimento leves, portáteis e facilmente reproduzíveis. Os ambientes são configurados em uma instância de uma máquina virtual designada "box". Deste modo os ambientes de desenvolvimento tornam-se isolados no sentido que não interferem com a configuração da máquina hospedeira.

Todos os aspectos como a box, rede, acesso a máquina e pastas sincronizadas são definidos em um arquivo chamado "Vagrantfile" que pode ser comparado a um Makefile usado pelo make. O conteúdo do Vagrantfile nada mais é do que uma rotina em Ruby.

Para iniciar um novo ambiente usa-se o comando: $ vagrant init no diretório do projeto, este comando cria um Vagrantfile padrão que deve ser editado para configurar a máquina conforme desejado.

Para inicializar o ambiente usa-se $ vagrant up. Este comando inicia a instância da máquina virtual, configura as interfaces de rede e cria a pasta 'vagrant' na raiz do sistema de arquivos, esta pasta é sincronizada com a pasta do projeto no SO hospedeiro. Assim, sempre que houver alguma modificação nos arquivos em um dos SO (hospedeiro ou convidado), esta é refletida no outro. Deste modo pode-se, por exemplo, editar arquivos de código fonte pelo SO hospedeiro e compilar o projeto pelo SO convidado sem ter passado pelo processo de instalar um compilador, bibliotecas, etc.

Tipicamente, o acesso à máquina virtual é feito por terminal via ssh através do comando $ vagrant ssh, mas também pode ser feito pela interface gráfica do VirtualBox.

Para encerrar uma instância usa-se $ vagrant halt. E para destruí-la usa-se $ vagrant destroy.

Boxes

Boxes são imagens de máquinas virtuais pré-configuradas que podem ser rapidamente clonadas. Escolher a box é o primeiro passo para configurar o ambiente. No trecho do Vagrantfile seguinte especificamos que a máquina irá usar como base a box "precise32".

Vagrant::Config.run do |config|
    config.vm.box = "precise32"
    # ...
end

Outras boxes podem ser instaladas atraves do comando $ vagrant box add <nome> <url>. O site vagrantbox.es disponibiliza varias boxes que foram criadas por outras pessoas. Também é possível criar boxes

Rede

Existem diferentes maneiras de conectar as máquinas visitantes a rede da hospedeira.

A rede privada permite acessar a máquina visitante atraves de um endereço de IP que não é acessível por outros computadores na mesma rede que a hospedira.

Vagrant::Config.run do |config|
    # ...
    config.vm.network :hostonly, "192.168.33.10"
    # ...
end

O modo de rede pública permite que a máquina visitante compartilhe a rede da hospedeira se comportando como mais uma máquina na rede.

Vagrant::Config.run do |config|
    # ...
    config.vm.network :bridged
    # ...
end

O redirecionamento de portas permite redirecionar todo trafego de uma porta na máquina hospedeira para a máquina visitante:

Vagrant::Config.run do |config|
    # ...
    config.vm.forward_port 80, 8080
    # ...
end

Nesta configuração a porta 8080 da máquina hospedeira é redirecionada para a porta 80 da visitante.

O Vagrant foi criado por Mitchell Hashimoto e era inicialmente um projeto no qual Mitchell trabalhava durante suas horas livres. Em 2012 foi criada a empresa HashiCorp para tratar do desenvolvimento da ferramenta, dar treino e suporte profissional.

O código fonte está hospedado no github.

Um projeto semelhante é o DOCKER. Ao contrário do Vagrant o DOCKER não usa máquinas virtuais para isolar os ambientes, a virtualização é feita através do lxc.

Referências:

vagrantup.com

}