Escolar Documentos
Profissional Documentos
Cultura Documentos
Vagrantcookbook PTBR Sample
Vagrantcookbook PTBR Sample
Um Guia Prtico
Erika Heidi
Esse livro est venda em http://leanpub.com/vagrantcookbook-ptbr
Essa verso foi publicada em 2014-07-07
This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishing
process. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools and
many iterations to get reader feedback, pivot until you have the right book and build traction once
you do.
2014 Erika Heidi
Contedo
Prefcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O que esperar desse livro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O que esperamos de voc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
2
2
Primeiros Passos . . . . . . .
Como o Vagrant funciona .
Terminologia . . . . . . .
Requerimentos . . . . . .
Instalao . . . . . . . . .
Atualizando o Vagrant . .
Vagrant - Comandos . . .
Seu primeiro Vagrant Up .
3
3
3
5
5
5
6
8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Prefcio
Eu lembro claramente a primeira vez que ouvi falar sobre o Vagrant. Incio de 2013, minha segunda
visita aos meetups do grupo de usurios AmsterdamPHP. A palestra era da amiga Michelle Sanver
(a.k.a. Geekie), sobre Open Source. Ela mostrou como era fcil se envolver e contribuir com projetos
Open Source, apenas clonando um repositrio e rodando o misterioso comando vagrant up.
Comecei a usar o Vagrant no dia seguinte.
Alguns meses depois, e no antes de enfrentar uma resistncia considervel dos meus colegas de
trabalho e do lder da equipe (eles estavam usando servidores remotos para testar as aplicaes
- upload via FTP para cada modificao), eu consegui introduzir o Vagrant na empresa em que
estava trabalhando em Amsterdam. Apesar de ter sofrido um pouco para criar o provisionamento
usando Puppet, considerando que o projeto era complexo e eu ainda no tinha quase nenhuma
experincia no assunto, essa foi uma excelente oportunidade para aprender mais sobre o Vagrant e
seus provisioners.
Depois de sair da empresa e voltar a trabalhar com meus projetos pessoais, comecei a submeter
palestras para conferncias PHP, e naturalmente Vagrant estava no topo da minha lista de assuntos
interessantes para falar sobre. Na mesma poca, conheci o LeanPub e a excelente plataforma que
eles construram para auto-publicao (self-publishing) - preciso dizer que eu realmente amo todo
tipo de servio que promove trabalhos independentes. Tambm no nenhuma novidade o fato de
que escrever uma paixo para mim desde que eu era criana. Juntando os pontos, a idia era bvia:
eu tinha que escrever um livro sobre minhas experincias com o Vagrant.
Esse livro baseado em muitos experimentos e pesquisas, escrito por uma usuria entusistica
e realmente curiosa. Tentei juntar nesse livro tudo o que voc precisa para ter uma experincia
proveitosa com o Vagrant, de uma forma totalmente prtica.
Aprecio todo tipo de feedback construtivo que possa fazer esse livro melhor - sugestes, correes,
qualquer coisa. Sinta-se vontade para me contactar no Twitter (@erikaheidi), IRC (erikaheidi, na
Freenode) ou via e-mail (erika@erikaheidi.com)
Introduo
Quantas vezes voc j ouviu a frase funciona na minha mquina ? Aposto que voc tambm j
usou essa desculpa - sim, acontece. praticamente impossvel lembrar de tudo que voc j instalou
e de todas as configuraes que voc j mexeu em sua mquina de trabalho, ento geralmente leva
algum tempo para descobrir o que deu errado na hora em que o projeto foi compartilhado com outro
colega de trabalho, ou pior, quando o projeto foi para produo.
Tambm bastante difcil lidar com mltiplos projetos quando eles requerem ambientes de
desenvolvimento diferentes - imagine que voc est trabalhando em um projeto que usa PHP 5.4,
mas em um dado momento surge a necessidade de trabalhar em um projeto legado que usa PHP 5.3.
Se voc ainda no est familiarizado com o Vagrant, esse um bom momento para conheclo melhor. Vagrant proporciona um ambiente de desenvolvimento reproduzvel e porttil usando
mquinas virtuais, tudo configurado em alguns arquivos dentro do repositrio do seu projeto clone o repositrio, execute vagrant up e seu projeto estar rodando em um ambiente especialmente
criado para ele, com todas as dependncias necessrias, em alguns minutos. Voc nunca ser refm
da desculpa funciona na minha mquina novamente - o ambiente exatamente o mesmo para
todos os desenvolvedores envolvidos no projeto, independente do sistema operacional rodando por
trs do Vagrant.
Introduo
Primeiros Passos
Este captulo cobre o bsico - terminologia, instalao e uso geral do Vagrant - incluindo como
inicializar a sua primeira mquina virtual.
Terminologia
Antes de avanarmos, importante conhecer os termos mais comuns usados com o Vagrant.
Box
Uma box (caixa) basicamente um pacote que representa um sistema operacional instalado (e
alguns pacotes bsicos), para um provedor especfico. O Vagrant ir replicar essa imagem para a
sua mquina virtual. Ao definir um projeto, voc escolhe qual box ser a base do seu ambiente de
desenvolvimento. Na primeira vez que voc rodar o Vagrant com uma box nova, ele ir fazer o
download da box e import-la para o seu sistema.
Host e Guest
A mquina / sistema operacional Host onde o Vagrant est instalado. A mquina Guest, como
voc pode deduzir, a mquina virtual inicializada pela Host.
Primeiros Passos
Provedores
De uma maneira geral, o provedor (provider) o software de virtualizao responsvel por criar as
mquinas virtuais que o Vagrant administra. Porm, Vagrant no trabalha apenas com mquinas
virtuais; alguns provedores especficos utilizam outros mtodos para criao do seu ambiente, como
no caso do Docker, que utiliza containers. Para simplificar as definies contidas no livro, vamos usar
o termo mquina virtual ou VM (virtual machine, termo original do ingls) para nos referirmos
ao ambiente de desenvolvimento gerado pelo provedor, independentemente do tipo de provedor
referenciado.
VirtualBox o provedor padro do Vagrant, mas voc tambm pode usar VMWare, KVM, dentre
outros. Para usar outros provedores, normalmente preciso instalar um plugin.
Plugins
Um plugin pode adicionar funcionalidades extras ao Vagrant, como suporte a outros provedores, por
exemplo.
Provisionadores
Um provisionador (provisioner) ir automatizar o processo de instalao e configurao do seu
ambiente, instalando pacotes e executando tarefas em geral. No obrigatrio usar um provisionador, mas tambm no faz muito sentido usar o Vagrant sem um - voc teria que logar na
mquina e instalar o seu ambiente manualmente, da mesma maneira que fazia antigamente (ou
voc poderia simplesmente usar o VirtualBox sozinho). O Vagrant suporta vrios provisionadores
diferentes, do mais bsico Shell at ferramentas complexas de automao como Chef. Iremos falar
mais detalhadamente sobre provisionadores em breve.
Vagrantfile
O Vagrantfile o arquivo de configurao do Vagrant, que conter todas as definies da sua
mquina virtual. Normalmente ele fica localizado na raiz do seu projeto. Teremos um captulo
dedicado ao Vagrantfile e suas opes de configurao.
Diretrios Sincronizados
Os diretrios sincronizados (synced folders) so usados para compartilhar contedo entre a mquina
Host e a mquina Guest. Dessa maneira, podemos continuar usando nossa IDE favorita, na mquina
Host, para editar os arquivos da aplicao, enquanto usamos a mquina Guest apenas para rodar e
testar a aplicao. As modificaes so refletidas em tempo real porque o contedo do diretrio
compartilhado entre as mquinas. A sincronizao em tempo real tem um custo em performance,
iremos falar sobre isso em um captulo posterior.
Primeiros Passos
Requerimentos
Para provisionar sua mquina virtual, o Vagrant precisa de um software de virtualizao, como
VirtualBox ou VMWare. O VirtualBox o padro, por ser gratuito e open source. Iremos trabalhar
com o VirtualBox nesse livro. Voc precisar ter ambos (Vagrant e VirtualBox) instalados na sua
mquina.
Tanto o Vagrant quanto o VirtualBox esto disponveis para os principais sistemas operacionais
(Linux, OSX e Windows). Algumas funcionalidades, porm, podem no estar presentes por padro
em alguns sistemas e podem requerer a instalao de pacotes adicionais - como por exemplo o NFS
(network file system) que usado com os diretrios sincronizados - para usar essa funcionalidade
no Linux, voc precisa instalar o nfsd, que j vem instalado por padro no OSX (e no suportado
pelo Windows).
Instalao
Para iniciar, a primeira coisa que voc deve fazer instalar o Vagrant e o VirtualBox. O ideal
obter os pacotes diretamente de suas pginas oficiais, j que gerenciadores de pacotes como o apt
no Ubuntu provavelmente tero verses antigas desses softwares, o que pode levar a problemas
de incompatibilidade. Verifique a pgina de downloads do Vagrant e a pgina de downloads do
VirtualBox, seguindo as instrues de instalao para o seu sistema operacional, para ambos os
softwares.
Atualizando o Vagrant
O Vagrant sempre procura manter compatibilidade com suas verses anteriores, de maneira que voc
no ter problemas ao atualizar para verses mais recentes. recomendado que voc mantenha a
sua verso do Vagrant sempre atualizada, pois os updates costumam trazer importantes correes e
novos recursos.
http://www.vagrantup.com/downloads.html
https://www.virtualbox.org/wiki/Downloads
http://docs.vagrantup.com/v2/virtualbox/index.html
Primeiros Passos
Se a sua verso instalada no for a mais recente, a sada do comando ir inform-lo qual a verso
mais atual para download:
Installed Version: 1.6.1
Latest Version: 1.6.3
To upgrade to the latest version, visit the downloads page and
download and install the latest version of Vagrant from the URL
below:
http://www.vagrantup.com/downloads.html
If you're curious what changed in the latest release, view the
CHANGELOG below:
https://github.com/mitchellh/vagrant/blob/v1.6.3/CHANGELOG.md
Vagrant - Comandos
Essa uma referncia rpida para os principais comandos do Vagrant:
Primeiros Passos
comando
descrio
uso comum
up
reload
provision
init
halt
destroy
suspend
resume
ssh
Se voc tiver um ou mais ambientes Vagrant rodando (isso inclui mquinas que foram suspensas ou
desligadas), voc ver um output similar a este:
Primeiros Passos
id
name
provider
state
directory
--------------------------------------------------------037588f default virtualbox running /projects/project1
f47c729 default virtualbox poweroff /projects/project2
Como voc pode ver, o primeiro ambiente est com o status running (rodando), enquanto o
segundo ambiente est com o status poweroff (desligado).
Agora, por exemplo, se voc quiser suspender um dos ambientes, voc s precisa adicionar o id
daquele ambiente no final do comando:
$ vagrant suspend f47c729
A mesma abordagem vlida para os outros comandos do Vagrant - voc s precisa adicionar o id
do ambiente, obtido atravs do comando global-status.
Nota: uma VM que foi apenas suspensa ser listada com o estado running. Apenas
ambientes que foram realmente desligados (com vagrant halt) sero listados como
poweroff.
O status e controle global funcionar apenas com ambientes que foram criados com verses
a partir da 1.6. Se voc tem um ambiente j criado (suspenso ou desligado) com verses
anteriores, voc precisar destru-lo com vagrant destroy e cri-lo novamente, para que
ele seja listado pelo global-status.
Primeiros Passos
Esse comando ir apenas criar um Vagrantfile padro, setando uma nica opo:
config.vm.box = "hashicorp/precise64"
A opo config.vm.box definir qual box seu ambiente virtual ir usar. Com as verses mais
recentes do Vagrant, a partir da 1.5, essa opo normalmente contm um identificador para uma box
hospedada na Vagrant Cloud. Vagrant Cloud um novo recurso lanado com a verso 1.5 - um local
centralizado para descobrir e compartilhar boxes para o Vagrant, provendo tambm versionamento
das boxes.
Vagrant < 1.5
Para verses anteriores do Vagrant (menores que 1.5), sem suporte Vagrant Cloud, normalmente
precisamos tambm prover a URL da box que queremos usar - apenas dessa maneira o Vagrant
saber de onde fazer o download da box. Para inicializar um Vagrantfile bsico usando a mesma
box do exemplo anterior (Ubuntu 12.04 64 bits) voc deve usar:
$ vagrant init precise64 http://files.vagrantup.com/precise64.box
O processo de baixar e importar a box feito automaticamente quando voc inicializa a mquina
virtual. Na primeira vez que voc roda o Vagrant com uma box nova, ela ser baixada e importada
para o seu sistema - o processo pode levar vrios minutos, dependendo da sua internet. Depois de
baixar e importar a box, a mquina ser inicializada e voc ver um output como este:
https://vagrantcloud.com
Primeiros Passos
Ta-Da! Sua primeira mquina virtual Vagrant est rodando. Agora, faa login usando:
10
Primeiros Passos
11
$ vagrant ssh
Voc perceber que se trata de uma mquina Ubuntu como qualquer outra, conectada internet
(desde que a sua mquina Host esteja conectada tambm), tudo funcional. Se voc executar um
ls /vagrant, ir perceber que, por padro, o diretrio atual (onde o Vagrantfile est presente, na
mquina Host) compartilhado entre as mquinas Host e Guest, ento qualquer arquivo colocado
dentro dessa pasta estar acessvel dentro da mquina virtual, na pasta /vagrant.
No prximo captulo, veremos como customizar melhor o Vagrantfile e como iniciar com o uso
dos provisionadores, automatizando tarefas que sero executadas logo depois que a mquina
inicializada pelo Vagrant.