E lá vamos nós falar de Vagrant!
Resumo da história dos plugins no Vagrant
Os plugins viraram cidadãos de primeira classe na API v2 do Vagrant (antes eles até eram suportados com um pouco de mágica e um monte de requires no meio do seu Vagrantfile). Agora, como o Mitchell Hashimoto diz, o próprio Vagrant usa a API de plugins interna para boa parte de suas implementações, por isso é possível ficar mais tranquilo de que as coisas funcionarão e de que a interface é estável e bem suportada.
Não tenho nenhum plugin ainda desenvolvido, mas já utilizo vários para facilitar meu trabalho com o Vagrant. Então, vamos conhecer um pouco mais?
Como instalar plugins no Vagrant
A documentação do Vagrant sobre plugins está bem completa nesse ponto, e é bem fácil: nada mais do que rodar: $ vagrant plugin install NOME-DO-PLUGIN.
Exemplo para instalar o vagrant-aws:
$ vagrant plugin install vagrant-aws
Os plugins são na maioria mantidos pela comunidade, e por isso não existe uma listagem oficial. No entanto, existe uma página na wiki do projeto com os plugins marcados pelos usuários – sugiro que a visite para buscar os que sirvam para o seu caso de uso.
Quer uma dica de alguns para começar? Veja abaixo:
Plugins Vagrant que não podem faltar para mim
Bindler
Para quem conhece o Composer no mundo PHP, o Bundler no mundo Ruby ou o Bower no mundo FrontEnd, é fácil entender o que esse plugin faz e também a vantagem de usá-lo, o Bindler.
Ele permite que você crie um arquivo na raiz do seu projeto Vagrant (na mesma pasta onde você coloca o seu Vagrantfile) para distribuição, deixando claro para seus usuários que plugins são as suas dependências.
Quando alguém for usar o seu projeto, executará $ vagrant plugin bundle antes do $ vagrant up, e o Bindler se encarregará de instalar as dependências que faltarem. Se o usuário já tiver os plugins instalado globalmente, estes serão usados; se não estiverem, o Bindler instalará o que faltar localmente para o projeto apenas. E quando o usuário fizer o $ vagrant destroy, tudo voltará ao que era antes.
- Como instalar: $ vagrant plugin install bindler; vagrant bindler setup;
- Bindler repo: https://github.com/fgrehm/bindler
Vagrant Cachier
O Cachier é aquele cara que faz você se perguntar: como consegui viver sem ele até agora? Ele faz o cache dos pacotes Apt que você instala na suas distribuições Debian-like (Ubuntu, inclusive) entre todos os projetos que você tiver baseado em uma box.
Assim, ele acelera (e muito!!!) a instalação das suas dependências, pois, se um pacote já tiver sido baixado naquela versão específica em um outro projeto, será usado o cache em vez de ir até o repositório oficial do Ubuntu, por exemplo.
- Como instalar: $ vagrant plugin install vagrant-cachier
- Cachier repo: https://github.com/fgrehm/vagrant-cachier
Vagrant HostManager
Vai chegar o momento em que apenas definir um IP na opção :private_network do Vagrantfile, ou mesmo a redirecionamento de porta via :forwarded_port, não será mais suficiente para testar seu projeto (por diversos motivos isso pode acontecer. Acredite, quando você chegar nesse nível, vai se lembrar das minhas palavras ).
Nesse momento, você vai procurar uma forma de configurar o seu arquivo HOSTS, /etc/hosts (nos sistemas *nix) ou %windir%\system32\drivers\etc\hosts (no Windows), para que o endereço do seu Vhost do Apache fique disponível tanto internamente nas máquinas (Guests) quanto a partir do seu sistema principal (Host). Qual é o caminho normal para fazer isso? Sim, editar manualmente seu arquivo HOST em um monte de lugares.
Aí é que entra o plugin HostManager: com base numa pequena configuração do seu Vagrantfile ele já configura tudo isso para você. Existem alguns outros que fazem o serviço de forma parecida, mas foi com ele que me adaptei mais.
- Como instalar: $ vagrant plugin install vagrant-hostmanager
- HostManager repo: https://github.com/smdahlen/vagrant-hostmanager
Considerações finais
Os plugins foram uma inclusão importante no ecossistema do Vagrant e, como viram, não é difícil de usar os que já estão disponíveis. Este artigo está longe de te dar o caminho completo para usar as ferramentas, mas já te inicia e mostra onde você pode conseguir mais informações. Procure conhecer e testar o máximo que você conseguir, pois assim vai ser fácil de tomar a decisão de usar ou não um deles em seus futuros projetos.
E fique à vontade de usar os comentários se quiser ajuda!
Até mais!