Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Diretório vagrant na MV

Tudo funcionou corretamente, sendo esta dúvida uma curiosidade para melhor entender o funcionamento da MV.

No snippet abaixo, é possível ver ao final (comando pwd) que estou no diretório /home/vagrant. Também se verifica que não há nenhum outro diretório chamado vagrant no usuário. Aqui não se encontra o arquivo world.txt.

Contudo, como o próprio path sugere, há o diretório vagrant no root e nele contém o ficheiro world.txt, como era suposto pelo comando inserido no provisioning.yml.

O motivo de inserirmos como destino o /vagrant é uma boa prática? Por que não foi usado o usuário (no caso também de nome vagrant), se não apenas por preferência?

Em resumo, desejo entender se a opção por gerar o arquivo de texto world.txt em /vagrant em vez de em ~/ teve algum motivo além de preferência pessoal.

Last login: Wed Feb  3 10:26:43 2021 from 172.17.177.1
vagrant@vagrant-ubuntu-trusty-64:~$ ls /vagrant/
Vagrantfile  hosts  provisioning.yml  world.txt
vagrant@vagrant-ubuntu-trusty-64:~$ cat world.txt
cat: world.txt: No such file or directory
vagrant@vagrant-ubuntu-trusty-64:~$ ls
vagrant@vagrant-ubuntu-trusty-64:~$ pwd
/home/vagrant
vagrant@vagrant-ubuntu-trusty-64:~$ ls -a
.  ..  .ansible  .bash_history  .bash_logout  .bashrc  .cache  .cloud-locale-test.skip  .profile  .ssh
vagrant@vagrant-ubuntu-trusty-64:~$ cat /vagrant/world.txt
hello
3 respostas
solução!

Olá, André. Tudo bem?

O diretório /vagrant está no primeiro nível após o root ( / ), não pertence ao usuário vagrant, por isso não aparece dentro diretório /home/vagrant.

Esse diretório é montado para que seja uma "ponte" entre a máquina host e a VM. É um diretório compartilhado em que as alterações feitas de um lado se refletem no outro. E esse diretório independe do usuário vagrant, por isso ele não é montado dentro da home do usuário.

Espero ter ajudado.

Sim, quando o Vagrant sobe é criado o diretório "ponte" de nome vagrant na root, onde se compartilham os documentos existentes no diretório onde está o Vagrantfile na nossa máquina real. Até aí tudo bem.

A dúvida era em relação ao comando inserido no provisioning.yml echo hello > /vagrant/world.txt, sobre se obrigatoriamente deveria ser encaminhado também para a o diretório /vagrant.

Fiz o teste sem incluir o diretório e percebi que não é necessário e que funciona do mesmo jeito, sendo que sem indicar o root o ficheiro aparece no usuário normalmente.

Ah, sim. Entendi.

O Ansible se loga no sistema alvo para fazer as modificações e, na maior parte das vezes, cada usuário possui um diretório em /home.

Nesse caso, já que o usuário está inicialmente no diretório ~/, que é um apelido para a sua home, se não passar nenhum diretório específico, ele vai criar o arquivo no local atual.

Mas é bom ter em mente que o diretório /vagrant e o /home/vagrant não possuem uma relação direta.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software