2013-06-29 10 views
10

Próbuję zmodyfikować mój plik Vagrant, aby automatycznie utworzyć folder w katalogu głównym projektu, jeśli go brakuje. Tworzenie folderu nie stanowi problemu, ale mam problem ze znalezieniem gdzie, aby utworzyć ten folder.Znajdź folder Vagrantfile

Udało mi się dowiedzieć, że ta informacja jest dostępna na obiekcie Vagrant::Environment jako cwd, ale nie mogę wymyślić, jak pobrać aktualną instancję z mojego pliku Vagrantfile. Dokumentacja dla Vagrant wydaje się być nieco skąpa.

Edit:

Moje pytanie nie jest o tym, jak korzystać z marionetką. Piszę kod wewnątrz Vagrantfile. Chcę wiedzieć, jak uzyskać bieżące wystąpienie Vagrant::Environment.

+0

można dać lepszy przykład tego, co staramy się robić? –

+0

Wymieniłem metodę, którą chcę wywołać, po prostu nie wiem, jak uzyskać aktualną instancję klasy. –

Odpowiedz

18

Aby znaleźć katalog Vagrantfile spróbować tego w Vagrantfile:

vagrant_root = File.dirname(__FILE__) 
0

Domyślnie katalog główny jest /home/vagrant

Oto przykład, aby utworzyć new_folder użyciu vagrant użytkownikowi

exec { 'create folder': 
    cwd  => '/home/vagrant', 
    user => 'vagrant', 
    command => 'mkdir new_folder', 
    unless => "/usr/bin/test -d /home/vagrant/new_folder", 
    } 
+0

Moje pytanie nie dotyczyło marionetki. –

+0

'/ home/vagrant' jest na maszynie wirtualnej i nie jest (zwykle) gdzie można znaleźć plik Vagrant. Myślę, że OP pyta o katalog, w którym plik Vagrant znajduje się na *** na hoście, ponieważ jego lokalizacja na VM jest dostępna tylko dzięki współużytkowaniu/zsynchronizowaniu katalogu. – iconoclast

0

Nie jestem pewien, co to jest ... Vagrant::Environment obiekt wydaje się być nieudokumentowane ...

Jeśli chciałbym utworzyć nowy folder w tym samym katalogu, co mój Vagrantfile, po prostu użyłbym shella provisioner:

config.vm.provision :shell, :inline => "mkdir -p /vagrant/test_folder;" 

Jeśli chcesz folder zawierający Vagrantfile na komputerze hosta, a następnie spróbuj umieścić to w swoim Vagrantfile:

puts Dir.pwd 

To powinno wydrukować katalog ... więc można następnie spróbuj robić rzeczy ta zmienna.

+2

Dir.pwd da rootowi włóczęgi, gdy znajdzie się w katalogu głównym, ale jeśli w podkatalogu, to da. – patcon