vagrant.d за межами домашньої папки


80

У мене проблема в тому, що мій домашній каталог насправді знаходиться на віддаленому сервері, і, коли ~ / .vagrant.d сидить на цьому сервері, продуктивність бродяги сильно зменшується (і розмір резервної копії файлового сервера збільшується).

То чи є спосіб перенести принаймні ~ / vagrant.d / box з домашнього каталогу?

Ура.

Відповіді:


117

За замовчуванням Vagrant використовує ~/.vagrant.d. На щастя, vagrant надає змінну середовища VAGRANT_HOME, яку ви можете встановити для бродяги.

Просто зробіть наступне, щоб змінити будинок бродяг (це працює лише в поточному сеансі)

export VAGRANT_HOME=/path/to/vagrant

Щоб зробити його постійним, додайте це до свого ~/.bash_profile(для оболонки входу).

Оновлення : VAGRANT_HOMEдодано до документації - Змінні середовища

VAGRANT_HOMEможна встановити для зміни каталогу, де Vagrant зберігає глобальний стан. За замовчуванням для цього встановлено значення ~/.vagrant.d. Домашній каталог Vagrant - це місце, де зберігаються такі речі, як ящики, тому він насправді може стати досить великим на диску.


8
Насправді я виявив, що VAGRANT_HOME повинен бути встановлений, а властивість "machinefolder" у VirtualBox має бути встановлена ​​через "VBoxManage setproperty machinefolder <path>" __ Дякую за підказку
pagid

1
Мої особисті висновки: роблячи змінну середовища постійною (у ~/.bash_profileабо якщо ви використовуєте ZSH у ~/.zshrcтощо), обов’язково також пишіть export. Перевірте, чи встановлено envце в командному рядку. При використанні віртуальної скриньки як провайдера, в графічному інтерфейсі також є параметр для шляху за замовчуванням.
Урс

2
Для Windows використовуйте діалогове вікно змінних середовища та додайте VAGRANT_HOME із значенням, наприклад, d: \ vagrant. Працює чудово з версією 2.2.4, принаймні. Не забудьте закрити існуючу консоль PowerShell і відкрити нову, щоб завантажити нову змінну середовища.
Eivind Gussiås Løkseth

На WSL2 - у мене виникла проблема, коли я видалив віртуальне вікно, створене vagrant, і раптом воно вже не змогло створити бродягу - мені вдалося це виправити, скопіювавши папку ~ / .vagrant.d на мій диск c - / mnt / c / Згодом я міг знову зробити бродяжником
серуп

16

VAGRANT_HOMEне працює добре в моєму Windows 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/")

як сказав Стів Х, і це чудово працює.


4
Якщо ви використовуєте локальний шлях для Windows, не забудьте уникнути зворотної косої риси (це мене зачепило). Тобто "D: \\ бродяга \\ дім"
Партизан

2
Зараз він працює добре, принаймні з версією 2.2.4. Я додав VAGRANT_HOME до діалогового вікна змінних середовища та встановив для його значення d: \ vagrant, яке спрацювало чудово після закриття та відкриття нової консолі PowerShell.
Eivind Gussiås Løkseth

Так, це працює. Не потрібно уникати зворотних скісних рисок. Просто VAGRANT_HOME=d:\my\alternative\path. Думаю, ви не перезавантажили середовище (наприклад, закривши та перезапустивши консоль) після того, як створили змінну середовища.
Девід Ференчі Рогожан,

Ніколи не робіть саме те, що ви робили (модифікували файл, який є частиною програмного забезпечення, яке ви використовуєте). Вам доведеться повторно застосовувати свої зміни кожного разу, коли ви перевстановлюєте або оновлюєте Vagrant до новішої версії.
Девід Ференчі Рогожан,

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 змініть рядок 17 середовища.rb, розташованого за адресою:
vagrant \ embedded \ gems \ gems \ vagrant-1.xxdev \ lib \ vagrant \ environment.rb


3
Не знаю, чому мене проголосували проти. Це стосується запитання - він не був позначений як Linux і міг допомогти комусь, як мені.
Сторсі

14
Возитися з рубіновими файлами - це зовсім не гарна порада, і змінна середовища VAGRANT_HOME також прекрасно працює в Windows.
непомітний

Не зрозумів, що змінна env була доступна у Win .. відсортував це, дякую!
Сторсі

1
Це правильна відповідь. Не всі хочуть (або знають) перезапустити Windows, щоб нові змінні середовища набули чинності. Швидше за все, якщо хтось дивиться на зміну основних файлів, це або тимчасово, або відчай це встановив. support.microsoft.com/en-us/kb/821761
TH_

Чому саме вам потрібно перезавантажити Windows? Це точно не потрібно. Я щойно створив змінну середовища, і вона працює нормально. Немає перезапуску. Можливо, вам просто потрібно буде перезавантажити середовище в консолі або просто запустити його після створення змінної середовища. Не змінюйте файли, що входять до складу певного програмного забезпечення чи пакету.
Девід Ференчі Рогожан,

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.
Томас Крімерс

0

Для користувачів Windows встановіть змінну середовища VAGRANT_HOMEна нове місце. Можливо, вам доведеться перезавантажити ПК, щоб він набув чинності.


0

Набір VAGRANT_DOTFILE_PATHзмінних середовища допоміг мені на машині Windows. VAGRANT_HOMEне вийшло.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.