Execute programas gráficos dentro do Vagrantboxes

O Vagrant é ótimo para nós, desenvolvedores, porque nos permite testar e executar nosso software em um ambiente virtual e, ao mesmo tempo, manter nossas máquinas reais sem bancos de dados, bibliotecas e linguagens de programação em diferentes sabores e versões.

Mas e se quisermos usar o Vagrant para rodar um software que precisa de uma GUI?

Graças ao X forwarding , podemos encaminhar a saída de programas gráficos usando o X11 para nossa máquina host.

Nota : se você estiver no OSX, você precisa instalar o XQuartz primeiro.

Permitir o X-Forwarding em seu Vagrantfile

Para usar o X-Forwarding, primeiro você precisa permiti-lo de dentro do seu Vagrantfile, assim:

Vagrant.configure(2) do |config|
...
config
.ssh.forward_x11 = true
end

Execute um programa GUI dentro da caixa do Vagrant:

Agora, em seu host, execute isto:

$ vagrant ssh-config
Host some_site
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardX11 yes

então agora podemos usar a porta 2222 para se conectar à máquina e executar um programa que requer X11:

$ vagrant ssh
vagrant@vagrant
: $ sudo apt-get install xclock
vagrant@vagrant
: $ exit
$ ssh
-X -p 2222 vagrant@localhost xclock

que deve começar a ser xclockexibido em nossa máquina host.