[英]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.