vagrant.d bên ngoài thư mục chính


80

Tôi gặp sự cố rằng thư mục chính của tôi thực sự nằm trên một máy chủ từ xa và với ~ / .vagrant.d nằm trên máy chủ đó, hiệu suất của vagrant giảm nhiều (và kích thước sao lưu của máy chủ tệp tăng lên).

Vậy có cách nào để di chuyển ít nhất ~ / vagrant.d / box ra khỏi thư mục chính không?

Chúc mừng.

Câu trả lời:


117

Theo mặc định, Vagrant sử dụng ~/.vagrant.d. May mắn thay, vagrant cung cấp một biến môi trường được gọi VAGRANT_HOMEđể bạn có thể đặt vagrant về nhà.

Chỉ cần làm như sau để thay đổi nhà lang thang (điều này chỉ hoạt động trong phiên hiện tại)

export VAGRANT_HOME=/path/to/vagrant

Để làm cho nó vĩnh viễn, hãy thêm cái này vào của bạn ~/.bash_profile(cho trình bao đăng nhập).

Cập nhật : VAGRANT_HOMEđã được thêm vào tài liệu - Biến môi trường

VAGRANT_HOMEcó thể được thiết lập để thay đổi thư mục nơi Vagrant lưu trữ trạng thái toàn cầu. Theo mặc định, điều này được đặt thành ~/.vagrant.d. Thư mục chính của Vagrant là nơi lưu trữ những thứ như hộp, vì vậy nó thực sự có thể trở nên khá lớn trên đĩa.


8
Trên thực tế tôi thấy rằng VAGRANT_HOME phải được thiết lập và thuộc tính "machinefolder" trong VirtualBox đã được thiết lập thông qua "VBoxManage machinefolder setProperty <path>" __ Cảm ơn đã gợi ý
pagid

1
Phát hiện cá nhân của tôi: Khi đặt biến môi trường là vĩnh viễn (trong ~/.bash_profilehoặc nếu bạn sử dụng ZSH trong ~/.zshrc, v.v.), hãy đảm bảo rằng bạn cũng viết export. Kiểm tra xem nó có được đặt envtrên dòng lệnh hay không. Khi sử dụng virtualbox làm nhà cung cấp, cũng có một cài đặt trong GUI cho đường dẫn mặc định của nó.
Urs

2
Đối với Windows, hãy sử dụng hộp thoại biến môi trường và thêm VAGRANT_HOME với giá trị ví dụ d: \ vagrant. Hoạt động hoàn toàn tốt với phiên bản 2.2.4 ít nhất. Hãy nhớ đóng bảng điều khiển PowerShell hiện có và mở một bảng điều khiển mới để tải biến môi trường mới.
Eivind Gussiås Løkseth

Trên WSL2 - tôi gặp sự cố khi xóa một hộp ảo được tạo bởi vagrant và đột nhiên nó không thể hoạt động được nữa - Tôi đã tìm cách khắc phục bằng cách sao chép thư mục ~ / .vagrant.d vào ổ windows c của mình - / mnt / c / Sau đó, tôi lại có thể làm lang thang
serup

16

VAGRANT_HOMEkhông hoạt động tốt trong Windows 8.1 của tôi. Nó hoạt động với tôi khi tôi thay đổi tệp

D: \ HashiCorp \ Vagrant \ nhúng \ gems \ gems \ vagrant-1.5.3 \ lib \ vagrant \ môi trường.rb

trên dòng 117 đến

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

như Steve H đã nói và nó hoạt động tốt.


4
Nếu bạn sử dụng đường dẫn cục bộ cửa sổ, hãy nhớ thoát khỏi dấu gạch chéo ngược (điều này khiến tôi không hiểu). Tức là "D: \\ vagrant \\ home"
Du kích

2
Hiện nó hoạt động tốt, ít nhất là với phiên bản 2.2.4. Tôi đã thêm VAGRANT_HOME vào hộp thoại biến môi trường và đặt giá trị của nó thành d: \ vagrant, hoạt động hoàn toàn tốt sau khi đóng và mở bảng điều khiển PowerShell mới.
Eivind Gussiås Løkseth

Có nó hoạt động. Không cần phải thoát khỏi dấu gạch chéo ngược. Đơn giản VAGRANT_HOME=d:\my\alternative\paththôi. Tôi đoán bạn đã không tải lại môi trường (bằng cách đóng và khởi động lại bảng điều khiển chẳng hạn) sau khi bạn tạo biến môi trường.
David Ferenczy Rogožan,

Không bao giờ làm đúng những gì bạn đã làm (đã sửa đổi một tệp là một phần của phần mềm bạn đang sử dụng). Bạn sẽ phải áp dụng lại sửa đổi của mình mỗi khi cài đặt lại hoặc nâng cấp Vagrant lên phiên bản mới hơn.
David Ferenczy Rogožan

12

Có thể hữu ích nếu thiết lập vĩnh viễn điều này trên hộp Windows bằng cách thực thi

setx VAGRANT_HOME "/d/.vagrant.d/"

1
Bạn phải chạy nó từ đường dẫn nơi đặt ứng dụng setx. Đường dẫn phổ biến nhất là: C: \ Windows \ System32
versedi

setx có thể được thực thi mà không cần phải di chuyển đến C:\Windows\System32, như C:\Windows\System32bình thường trên %path%.
lucid_dreamer

5

Trên Windows thay đổi dòng 17 của môi
trường.rb tại: vagrant \ nhúng \ gems \ gems \ vagrant-1.xxdev \ lib \ vagrant \ môi trường.rb


3
Không chắc tại sao tôi lại bị bỏ phiếu. Điều này có liên quan đến câu hỏi - nó không được gắn nhãn linux và có thể giúp ai đó giống như tôi.
Storsey

14
Lộn xộn trong các tệp ruby ​​không phải là một lời khuyên hay và biến môi trường VAGRANT_HOME cũng hoạt động tốt trên Windows.
trang

Không nhận ra biến env có sẵn trên Win .. đã sắp xếp như vậy ngay, cảm ơn!
Storsey

1
Đây là một phản hồi hợp lệ. Không phải ai cũng muốn (hoặc biết) khởi động lại Windows để các biến môi trường mới có hiệu lực. Rất có thể nếu ai đó đang tìm cách thay đổi các tệp lõi, thì đó là tạm thời hoặc sự tuyệt vọng đã thiết lập nó. support.microsoft.com/en-us/kb/821761
TH_

Chính xác thì tại sao bạn cần khởi động lại Windows? Điều đó chắc chắn không cần thiết. Tôi vừa tạo một biến môi trường ngay bây giờ và nó đang hoạt động tốt. Không khởi động lại. Bạn có thể chỉ cần tải lại một môi trường trong bảng điều khiển hoặc chỉ cần khởi động nó sau khi bạn tạo biến môi trường. Không sửa đổi các tệp là một phần của một số phần mềm hoặc gói.
David Ferenczy Rogožan,

2

một nơi khác (nơi gốc nơi nó đọc các biến ENV) ở shared_helpers.rb, dòng 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

Dù sao, tôi nghĩ rằng cách tốt nhất là sử dụng biến môi trường VAGRANT_HOME, trong trường hợp nâng cấp phiên bản vagrant.

Bạn có thể sử dụng chức năng này như:

disk_path = self.user_data_path().to_s

Đây là giải pháp ưa thích của tôi. Nó hoạt động bên trong một tệp vagrant như Vagrant::user_data_path().to_s.
Tomas Creemers

0

Đối với người dùng Windows, hãy đặt biến môi trường VAGRANT_HOMEthành vị trí mới. Bạn có thể cần phải khởi động lại PC của mình để PC có hiệu lực.


0

Bộ VAGRANT_DOTFILE_PATHbiến môi trường đã giúp tôi trên máy Windows. VAGRANT_HOMEkhông thành công.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.