vagrant.d poza folderem domowym

80

Mam problem z tym, że mój katalog domowy faktycznie znajduje się na zdalnym serwerze i gdy ~ / .vagrant.d znajduje się na tym serwerze, wydajność vagrant znacznie spada (i zwiększa się rozmiar kopii zapasowej serwera plików).

Czy jest więc jakiś sposób na przeniesienie przynajmniej ~ / vagrant.d / boxes z katalogu domowego?

Twoje zdrowie.

pagid
źródło

Odpowiedzi:

117

Vagrant domyślnie używa ~/.vagrant.d. Na szczęście vagrant udostępnia zmienną środowiskową o nazwie, za VAGRANT_HOMEpomocą której można ustawić włóczęgę jako dom.

Po prostu wykonaj następujące czynności, aby zmienić dom włóczęgi (działa to tylko w bieżącej sesji)

export VAGRANT_HOME=/path/to/vagrant

Aby to było trwałe, dodaj to do swojego ~/.bash_profile(dla powłoki logowania).

Aktualizacja : VAGRANT_HOMEdodano do dokumentacji - Zmienne środowiskowe

VAGRANT_HOMEmożna ustawić, aby zmienić katalog, w którym Vagrant przechowuje stan globalny. Domyślnie jest to ustawienie ~/.vagrant.d. Katalog domowy Vagrant to miejsce, w którym przechowywane są rzeczy takie jak pudełka, więc w rzeczywistości może on stać się dość duży na dysku.

Terry Wang
źródło
8
Właściwie odkryłem, że VAGRANT_HOME musi być ustawiony i że właściwość "machinefolder" w VirtualBox musi być ustawiona przez "VBoxManage setproperty machinefolder <path>" __ Dzięki za podpowiedź
pagid
1
Moje osobiste ustalenia: Kiedy ~/.bash_profileustawiasz zmienną środowiskową na stałe (w lub jeśli używasz ZSH w ~/.zshrcitp.), Upewnij się, że piszesz exportrównież. Sprawdź, czy jest ustawiona za envpomocą w wierszu poleceń. Gdy używasz virtualbox jako dostawcy, w GUI jest również ustawienie domyślnej ścieżki.
Urs
2
W systemie Windows użyj okna dialogowego zmiennych środowiskowych i dodaj VAGRANT_HOME z wartością na przykład d: \ vagrant. Działa doskonale przynajmniej z wersją 2.2.4. Pamiętaj, aby zamknąć istniejącą konsolę PowerShell i otworzyć nową, aby załadować nową zmienną środowiskową.
Eivind Gussiås Løkseth
Na WSL2 - miałem problem polegający na tym, że usunąłem wirtualne pudełko utworzone przez włóczęgę i nagle nie było już w stanie zrobić włóczęgi - udało mi się to naprawić, kopiując folder ~ / .vagrant.d na dysk c systemu Windows - / mnt / c / Później mogłem ponownie zmusić włóczęgę
serup
16

VAGRANT_HOMEnie działa dobrze w moim Windows 8.1. U mnie zadziałało, kiedy zmieniłem plik

D: \ HashiCorp \ Vagrant \ embedded \ gems \ gems \ vagrant-1.5.3 \ lib \ vagrant \ environment.rb

na linii 117 do

@home_path = Util::Platform.fs_real_path("D:/vagrant/home/")

jak powiedział Steve H i działa dobrze.

Niesamowite
źródło
4
Jeśli używasz lokalnej ścieżki systemu Windows, pamiętaj, aby uniknąć odwrotnego ukośnika (to mnie złapało). Tj. „D: \\ vagrant \\ home”
Guerrilla
2
Teraz działa dobrze, przynajmniej z wersją 2.2.4. Dodałem VAGRANT_HOME do okna dialogowego zmiennych środowiskowych i ustawiłem jego wartość na d: \ vagrant, co działało doskonale po zamknięciu i otwarciu nowej konsoli PowerShell.
Eivind Gussiås Løkseth
Tak to działa. Nie ma potrzeby ucieczki przed ukośnikami. Po prostu VAGRANT_HOME=d:\my\alternative\path. Wydaje mi się, że nie przeładowałeś środowiska (na przykład zamykając i ponownie uruchamiając konsolę) po utworzeniu zmiennej środowiskowej.
David Ferenczy Rogožan
Nigdy nie rób dokładnie tego, co zrobiłeś (zmodyfikuj plik, który jest częścią używanego oprogramowania). Będziesz musiał ponownie zastosować modyfikację za każdym razem, gdy ponownie zainstalujesz lub zaktualizujesz Vagrant do nowszej wersji.
David Ferenczy Rogožan
12

Przydatne może być trwałe ustawienie tej opcji na komputerze z systemem Windows przez wykonanie

setx VAGRANT_HOME "/d/.vagrant.d/"
ivica
źródło
1
Musisz go uruchomić ze ścieżki, w której znajduje się aplikacja setx. Najczęstsza ścieżka to: C: \ Windows \ System32
versedi
setx można wykonać bez konieczności przechodzenia do C:\Windows\System32, jak C:\Windows\System32zwykle w %path%.
lucid_dreamer
5

W systemie Windows zmień wiersz 17 pliku environment.rb znajdujący się pod adresem:
vagrant \ embedded \ gems \ gems \ vagrant-1.xxdev \ lib \ vagrant \ environment.rb

Storsey
źródło
3
Nie wiem, dlaczego zostałem odrzucony. Jest to istotne dla pytania - nie był oznaczony jako linux i mógłby pomóc komuś takiemu jak ja.
Storsey,
14
Grzebanie w plikach ruby ​​nie jest dobrą radą, a zmienna środowiskowa VAGRANT_HOME również działa dobrze w systemie Windows.
pagid
Nie zdawałem sobie sprawy, że zmienna env jest dostępna w Win .. od razu to rozwiązałem, dzięki!
Storsey,
1
To jest ważna odpowiedź. Nie każdy chce (lub wie, że musi) ponownie uruchomić system Windows, aby nowe zmienne środowiskowe zaczęły obowiązywać. Są szanse, że jeśli ktoś szuka zmiany podstawowych plików, jest to tymczasowe lub desperacja to ustawiła. support.microsoft.com/en-us/kb/821761
TH_
Dlaczego dokładnie powinieneś ponownie uruchomić system Windows? To zdecydowanie nie jest potrzebne. Właśnie utworzyłem teraz zmienną środowiskową i działa dobrze. Bez restartu. Może być konieczne ponowne załadowanie środowiska w konsoli lub po prostu uruchomienie go po utworzeniu zmiennej środowiskowej. Nie modyfikuj plików, które są częścią oprogramowania lub pakietu.
David Ferenczy Rogožan
2

inne miejsce (główne miejsce, w którym odczytuje zmienne ENV) znajduje się w shared_helpers.rb, wiersz 71 (vagrant v 1.6.5):

 # This returns the path to the ~/.vagrant.d folder where Vagrant's
  # per-user state is stored.
  #
  # @return [Pathname]
  def self.user_data_path
    # Use user spcified env var if available
    path = ENV["VAGRANT_HOME"]

    # On Windows, we default to the USERPROFILE directory if it
    # is available. This is more compatible with Cygwin and sharing
    # the home directory across shells.
    if !path && ENV["USERPROFILE"]
      path = "#{ENV["USERPROFILE"]}/.vagrant.d"
    end

    # Fallback to the default
    path ||= "~/.vagrant.d"

    Pathname.new(path).expand_path
end

W każdym razie, myślę, że najlepszym sposobem jest użycie zmiennej środowiskowej VAGRANT_HOME, w przypadku aktualizacji wersji włóczęgów.

Możesz użyć tej funkcji na przykład:

disk_path = self.user_data_path().to_s
Christophe
źródło
To było moje ulubione rozwiązanie. Działa wewnątrz błędnego pliku jako Vagrant::user_data_path().to_s.
Tomas Creemers
0

W przypadku użytkowników systemu Windows ustaw zmienną środowiskową VAGRANT_HOMEna nową lokalizację. Aby to zadziałało, może być konieczne ponowne uruchomienie komputera.

Dalton Tan
źródło
0

Zestaw VAGRANT_DOTFILE_PATHzmiennych środowiskowych pomógł mi na komputerze z systemem Windows. VAGRANT_HOMEnie wyszło.

Nazar
źródło