홈 폴더 외부의 vagrant.d


80

내 홈 디렉토리가 실제로 원격 서버에 있고 ~ / .vagrant.d가 해당 서버에 있으면 vagrant의 성능이 크게 감소하고 파일 서버 백업 크기가 증가한다는 문제가 있습니다.

그래서 적어도 ~ / vagrant.d / boxes를 홈 디렉토리에서 옮길 수있는 방법이 있습니까?

건배.

답변:


117

기본적으로 Vagrant는 ~/.vagrant.d. 다행히 vagrant는 다음과 같은 환경 변수를 제공합니다.VAGRANT_HOME vagrant home을 설정할 수있는 .

방랑자 집을 변경하려면 다음을 수행하십시오 (현재 세션에서만 작동 함).

export VAGRANT_HOME=/path/to/vagrant

영구적으로 만들려면 이것을 ~/.bash_profile로그인 쉘에 추가하십시오 .

업데이트 : VAGRANT_HOME문서에 추가되었습니다- 환경 변수

VAGRANT_HOMEVagrant가 글로벌 상태를 저장하는 디렉토리를 변경하도록 설정할 수 있습니다. 기본적으로이 값은로 설정됩니다 ~/.vagrant.d. Vagrant 홈 디렉토리는 상자와 같은 항목이 저장되는 곳이므로 실제로 디스크에서 상당히 커질 수 있습니다.


8
실제로 VAGRANT_HOME을 설정해야하고 VirtualBox의 "machinefolder"속성을 "VBoxManage setproperty machinefolder <path>"를 통해 설정해야한다는 것을 알았습니다. __ 힌트를 주셔서 감사합니다
pagid

1
내 개인적인 결과 : 환경 변수를 영구적으로 만들 때 (에서 ~/.bash_profile또는 ZSH를 사용하는 경우 ~/.zshrc등에서) 작성하십시오 export. env명령 줄 에서로 설정되어 있는지 확인하십시오 . virtualbox를 제공자로 사용하는 경우 기본 경로에 대한 GUI 설정도 있습니다.
Urs

2
Windows의 경우 환경 변수 대화 상자를 사용하고 인스턴스 값 d : \ vagrant와 함께 VAGRANT_HOME을 추가합니다. 버전 2.2.4 이상에서는 완벽하게 작동합니다. 기존 PowerShell 콘솔을 닫고 새 콘솔을 열어 새 환경 변수를로드해야합니다.
Eivind Gussiås Løkseth 19

WSL2에서-vagrant가 만든 가상 상자를 삭제하고 갑자기 더 이상 vagrant를 만들 수없는 문제가 발생했습니다. ~ / .vagrant.d 폴더를 Windows c 드라이브에 복사하여 문제를 해결했습니다. / mnt / c / 나중에 다시 방랑자를 만들 수 있습니다
serup

16

VAGRANT_HOMEWindows 8.1에서 잘 작동하지 않습니다. 파일을 변경했을 때 저에게 효과적이었습니다.

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

117 번 라인에

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

Steve H가 말한 것처럼 잘 작동합니다.


4
Windows 로컬 경로를 사용하는 경우 백 슬래시를 이스케이프해야합니다 (이것은 나를 잡았습니다). 즉, "D : \\ 방랑 \\ 집"
게릴라

2
적어도 2.2.4 버전에서는 이제 잘 작동합니다. 환경 변수 대화 상자에 VAGRANT_HOME을 추가하고 값을 d : \ vagrant로 설정했습니다. 새 PowerShell 콘솔을 닫고 열면 완벽하게 작동했습니다.
Eivind Gussiås Løkseth

예, 작동합니다. 백 슬래시를 이스케이프 할 필요가 없습니다. 간단히 VAGRANT_HOME=d:\my\alternative\path. 환경 변수를 만든 후 (예를 들어 콘솔을 닫고 다시 시작하여) 환경을 다시로드하지 않은 것 같습니다.
David Ferenczy Rogožan

수행 한 작업을 정확히 수행하지 마십시오 (사용중인 소프트웨어의 일부인 파일을 수정). Vagrant를 최신 버전으로 다시 설치하거나 업그레이드 할 때마다 수정 사항을 다시 적용해야합니다.
David Ferenczy Rogožan

12

Windows 상자에서 다음을 실행하여 영구적으로 설정하는 것이 유용 할 수 있습니다.

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

1
setx 앱이있는 경로에서 실행해야합니다. 가장 일반적인 경로는 C : \ WINDOWS \ system32를
versedi

setx는 이동하지 않고 실행될 수있는 C:\Windows\System32바와 같이, C:\Windows\System32온 일반적이다 %path%.
lucid_dreamer

5

Windows에서
vagrant \ embedded \ gems \ gems \ vagrant-1.xxdev \ lib \ vagrant \ environment.rb에있는 environment.rb의 17 행을 변경하십시오.


3
내가 왜 낙선되었는지 잘 모르겠습니다. 이것은 질문과 관련이 있습니다. Linux라는 레이블이 붙지 않았으며 저와 같은 사람을 도울 수 있습니다.
Storsey

14
루비 파일을 엉망으로 만드는 것은 좋은 조언이 아니며 VAGRANT_HOME 환경 변수도 Windows에서 잘 작동합니다.
pagid aug

Win ..에서 env 변수를 사용할 수 있다는 사실을 몰랐습니다. 바로 정렬했습니다. 감사합니다!
Storsey

1
이것은 유효한 응답입니다. 모든 사람이 새 환경 변수를 적용하기 위해 Windows를 다시 시작하기를 원하거나 알고있는 것은 아닙니다. 누군가가 핵심 파일을 변경하려는 경우 일시적이거나 절망에 의해 설정되었을 가능성이 있습니다. support.microsoft.com/en-us/kb/821761
TH_

Windows를 정확히 다시 시작해야하는 이유는 무엇입니까? 그것은 확실히 필요하지 않습니다. 방금 환경 변수를 만들었는데 제대로 작동하고 있습니다. 다시 시작하지 않습니다. 콘솔에서 환경을 다시로드하거나 환경 변수를 만든 후에 시작해야 할 수도 있습니다. 일부 소프트웨어 또는 패키지의 일부인 파일을 수정하지 마십시오.
David Ferenczy Rogožan

2

다른 위치 (ENV 변수를 읽는 루트 위치)는 shared_helpers.rb, 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

어쨌든 방랑 버전 업그레이드의 경우 환경 변수 VAGRANT_HOME을 사용하는 것이 가장 좋은 방법이라고 생각합니다.

이 기능을 다음과 같이 사용할 수 있습니다.

disk_path = self.user_data_path().to_s

이것이 제가 선호하는 솔루션이었습니다. 방랑 파일 내에서 Vagrant::user_data_path().to_s.
Tomas Creemers

0

Windows 사용자의 경우 환경 변수 VAGRANT_HOME를 새 위치로 설정하십시오 . 적용하려면 PC를 다시 시작해야 할 수 있습니다.


0

VAGRANT_DOTFILE_PATH환경 변수 세트는 Windows 시스템에서 나를 도왔습니다. VAGRANT_HOME잘되지 않았다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.