2016-03-22 23 views
2

我在兩臺機器(家庭和辦公室)上使用Vagrant並將我的工作目錄存儲在Dropbox中。我經常碰到pronblem:Dropbox上的Vagrant.vagrant文​​件

The VirtualBox VM was created with a user that doesn't match the 
current user running Vagrant. VirtualBox requires that the same user 
be used to manage the VM that was created. Please re-run Vagrant with 
that user. This is not a Vagrant issue. 

這是很容易解決的,蠻力,通過rm -rf .vagrant,但我想找到一個更好的解決方案 - 比如一個易於自動化的方式把.vagrant文件別處。

更新

下面的情況:通過Dropbox的辦公和家用機之間共享的工作目錄。

  1. I vagrant up在辦公機器上成功。
  2. 我關閉辦公室機器並回家。
  3. 我收到關於vagrant up的消息,說id值與我創建時不一樣。 (503對501一般)
  4. 我做rm -rf .vagrant並做vagrant up再次,成功。
  5. 當我回到辦公室,同樣的問題。
+0

什麼時候發生?當你跑上'vagrant up'?所以要清楚你的'.vagrant'目錄是在保險箱中,但不是vm?你的虛擬機是在Dropbox嗎?虛擬機的問題在於虛擬機位於一箇中央文件夾中(例如,用於mac的'/ Users/user/Documents/Virtual Machines')(例如,vmware將虛擬機存儲在'.vagrant'目錄中,當你備份項目,但另一回事),所以可能不是工作目錄的一部分,那麼你的每2臺機器都建立了自己的虛擬機有自己的ID,這樣當您切換的機器你問題 –

+0

是的,當我運行'無業遊民up'發生。見上面 –

+0

我可以問你爲什麼要這樣做?流浪漢背後的一般理念是虛擬機很容易重新創建,所以你應該能夠輕鬆地爲你的家庭和辦公室創建盒子,而不需要共享'.vagrant'目錄 - 它們可以擁有不同的機器ID,因爲你的供應腳本應該確保這些盒子是一樣的。 –

回答

1

在原有問題

我得到的流浪漢了該消息,稱ID值不 一樣,我創建的時候。 (一般503 VS 501)

您可以通過以下文件.vagrant\machines\default\virtualbox\creator_uid編輯UID和更改修復它的501/503到0(0意味着你作爲運行sudo的)

但我想想另一個會彈出的問題是,你的每臺機器都在創建自己的虛擬機,並將其存儲在你的/Users/user/Documents/Virtual Machines下,並且你沒有共享這些文件。

當你使用VirtualBox創建一個虛擬機時,vb會分配虛擬機和id--這個id是關鍵,並且會建立vagrant和vb之間的鏈接。當你創建2層不同的虛擬機,虛擬機有不同的ID和無業遊民不能在2

希望之間切換,這是明確的,到目前爲止,但如何從那裏 - 你將有兩個選擇:

  1. 顯然你不介意太多有關VM的內容(你做rm -rf所以你每次打開計算機時重新創建VM),所以你可以創建一個.vagrant.home.vagrant.office和切換.vagrant指向當您更換機器時至少不需要重新創建虛擬機,您可以從相應的計算機啓動虛擬機。這並不理想,但會起作用。

  2. 你能避免通過設置環境變量VAGRANT_CWD這樣你就不會存儲您的Dropbox帳戶下的.vagrant目錄切換從上面點.vagrant目錄,但你可以有導出這個變量並存儲腳本。在你的每臺機器(一個不共享的文件夾)上分別放置流浪目錄,這樣每臺機器都將創建自己的虛擬機。 你可以有VAGRANT_CWD集的每一臺計算機您的bash的個人資料,如果你計劃有一個不同的位置,但你也可以有例如workhere.sh腳本,將只是做export VAGRANT_CWD=/folder...如果你有兩個計算機上使用相同的設置,只是做source workhere此之前vagrant up

  3. 其他選項(我沒有測試)將包括以下幾個步驟:導出/導入一次從VirtualBox中創建成一個計算機到另一個虛擬機。這裏的問題將是保持Id。我不確定,但通常情況下,虛擬框應在導入其他計算機時保留ID。

    • 可以<MachineRegistry>/Users/<user>/Library/VirtualBox/VirtualBox.xml下檢查文件和審查的條目,你會拿到機器條目的UUID,確保他們的2臺計算機之間的匹配導出/導入
    • 後無業遊民有另一個文件需要在計算機上的可用虛擬機列表中同步2臺計算機/Users/<user>/.vagrant.d/data/machine-index/index。如果一臺計算機上的其他虛擬機在另一臺計算機上不可用,則可以同步,但最好是僅複製要同步的虛擬機所需的條目。

你這樣做,你同步的.vagrant文件夾後,你應該能夠vagrant up從一臺計算機或其他。

同樣,我沒有測試所有步驟,但我認爲這是可行的。

幾點注意事項:

  • 這將工作僅在2臺計算機的設置相同(相同的操作系統(如果不是版本至少同一個家庭),文件夾結構的一些文件涉及完整路徑,相同的虛擬箱版本...)
  • 流浪漢箱應在2臺電腦上同步(但我想這是因爲你可以從同樣的Vagrantfile遊民了在任何計算機的,如果你破壞/創建VM的情況下)
  • ,您需要再次同步Id,因爲每次創建新虛擬機時,虛擬框都會分配一個新的ID
+0

這個問題不是流浪的關鍵,而是圖像是由一個盒子上的uid 503和另一個盒子上的501創建的。 –

+0

好吧,它可能不是機器Id,但它會 - 我懷疑vagrant在2臺機器上分配相同的機器ID - 現在編輯'.vagrant \ machines \ default \ virtualbox \ creator_uid'並將'0' –

+0

@FrédéricHenri ,當你說'創建.vagrant.home和.vagrant.office並將.vagrant指向相應的文件夾'時,你是否說.vagrant是適當的文件夾的符號鏈接? – user454038