No meu artigo anterior, escrevi um pouco sobre o Vagrant dando os passos iniciais para quem não tinha conhecimento sobre a ferramenta. Neste artigo, pretendo esclarecer mais alguns assuntos sobre ela e complementar com algumas informações.
Se você já é mais familiarizado com o universo Linux e servidores, deve ter sentido a falta de saber como instalar uma máquina do zero ou como obter outros sabores de Linux. Pois bem, as boxes oficiais do Vagrant são as versões 32/64 bits dos Ubuntus Lucid e Precise, porém você pode encontrar outras versões feitas por terceiros aqui. Complementando as dicas de link, existem também alguns plugins para o Vagrant.
Alguns devem ter se perguntado no artigo anterior como funciona o vagrant ssh.
É simples, talvez tenham reparado esta linha [default] -- 22 => 2222 (adapter 1)
no boot da máquina vitual. O que ela está dizendo é que ocorreu um mapeamento da porta 2222 do localhost (sua máquina hospedeira) para a porta 22 da máquina virtual (porta padrão de ssh). Vejam abaixo como funciona:
host $ ssh vagrant@localhost -p 2222
The authenticity of host '[localhost]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is e6:ad:1e:ee:15:53:7d:a6:ee:7c:aa:04:7a:ad:9a:9a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
vagrant@localhost's password: << senha: vagrant >>
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-34-generic-pae i686)
* Documentation: https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Sun Dec 2 09:19:02 2012 from 10.0.2.2
vagrant@precise32:~$ exit
logout
Connection to localhost closed.
Repare que o Vagrant nos ajuda muito com o simples vagrant ssh,
que nem senha pede. E a importância de entender esse funcionamento é que provavelmente você não vai usar a máquina apenas para aprender a usar o shell do Linux. Muito provavelmente o seu interesse vai ser rodar alguma aplicação Web ou qualquer outra que venha a demandar uma conexão do o ambiente fora da VM. Então, como fazer isso? Lembram do Vagrantfile? É nele que vamos fazer a configuração para isso!
config.vm.forward_port 80, 8080
OBS: é preciso fazer o reload da máquina virtual.
A fim de testar o funcionamento, vamos instalar o NGINX apenas para demonstrar o funcionamento.
vm $ sudo apt-get install nginx
vm $ sudo /etc/init.d/nginx start
Feito isso, acesse a url http://localhost:8080 da sua máquina hospedeira e confira se funcionou.
Nesse ponto, acredito que você ainda tenha muitas dúvidas e questionamentos sobre o Vagrant, e isso é normal, mas com o tempo vamos aprendendo muito mais. Repare que não usamos muitos comandos até o momento, e não falei nada sobre as configurações de “hardware” da VM. Quanto aos comandos, não há muito sobre o que falar, mas a documentação é muito boa, confira:
host $ vagrant help
Usage: vagrant [-v] [-h] command [<args>]
-v, --version Print the version and exit.
-h, --help Print this help.
Available subcommands:
box
destroy
gem
halt
init
package
provision
reload
resume
ssh
ssh-config
status
suspend
up
For help on any individual command run `vagrant COMMAND -h`
Na parte “hardware”, a máquina que estamos trabalhando no exemplo tem 80 GB de disco e 380 MB de memória por padrão, e isso pode ser modificado de duas maneiras: 1) alterando no software do VirtualBox mesmo; ou 2) via Vagrantfile, mas não vou abordar isso neste momento. Um outro interesse que talvez você tenha é compartilhar dados entre a máquina hospedeira e a virtual. Isso é simples, a pasta que contém o Vagrantfile está por padrão compartilhada com a VM, confira:
vagrant@precise32:~$ ls /vagrant/
Vagrantfile
Caso tenha interesse em compartilhar mais pastas ou mudar o local de compartilhamento, segue o exemplo de configuração para o Vagrantfile:
Vagrant::Config.run do |config|
# ...
config.vm.share_folder "app", "/home/vagrant/app", "/Users/joaovrmaia/app"
end
Explicando:
app
é o nome lógico do compartilhamento/home/vagrant/app
é o local na máquina virtual onde vai ser montado o compartilhamento/Users/joaovrmaia/app
é o local da pasta na máquina hospedeira
Vamos ficar por aqui neste artigo e continuamos a conversa no próximo.