簡體   English   中英

告訴Vagrant主機的ip

[英]Tell Vagrant the ip of the host machine

我正在使用一個流浪盒作為一個開發機器,用於一個奇怪的依賴項目,我似乎只能安裝在ubuntu上。

我創建了我的數據庫並在我的主機上安裝了我的應用程序代碼,並通過NFS文件共享和postgres配置與vagrant實例共享它們。

我的問題是,當我將計算機從工作轉移到家時,我的計算機的ip發生了變化,我的database.yml變得無效。 為了使我的服務器和控制台正常工作,我需要在每次加入新網絡時使用主機的新IP地址更新yaml文件。

由於rails應用程序在vagrant上運行(即使它的文件位於我的主機上),任何嘗試從ifconfig中取出ip的嘗試都將失敗,因為它正在查看VM而不是主機框。 所以像這樣的東西不起作用:

# database.yml
development:
  host: <%= `ifconfig en0 | grep "inet " | cut -d" " -f2` %>

Vagrant文​​件中是否有配置傳遞此信息,或者是否可以創建ubuntu實例可以讀取的主機ip的ENV變量?

根據 ,您可以通過VM的默認網關訪問主機。

在guest上運行netstat -rn應該會在我的機器上為您提供相關信息,將上面的代碼更改為以下內容,看起來它會讓您感覺:

# database.yml
development:
  host: <%= `netstat -rn | grep "^0.0.0.0 " | cut -d " " -f10` %>

不確定,如果它適用於所有人,雖然我的所有虛擬盒機都通過這個“魔術”ip看到主機:

10.0.2.2

不知道它是否總是靜態的,雖然對我而言非常方便 - 我可以在家里,辦公室使用筆記本電腦 - 通過路由器為我分配不同的IP,但我的VM知道他們的主人的“可信賴的名字”🐶

作為Matt解決方案的替代方案,您還可以使用Vagrantfile的 專用網絡

如果添加如下行:

config.vm.network "private_network", ip: "192.168.42.10"

Vagrant將向虛擬機添加第二個適配器,並將其連接到該子網上的僅主機適配器。

這樣你就可以讓database.yml指向192.168.42.1 (在這個例子中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM