Back-End

28 jan, 2013

Conversando sobre Vagrant – Parte 02

Publicidade

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.