2016-09-19 64 views
0

我已經預先配置了一個RHEL映像,我不知道它是如何設置的。 默認情況下,它在ip 192.168.50.50上配置了本地網絡接口。我想要做的是從Vagrant腳本配置它的IP。從Vagrant腳本設置RHEL框的IP

這似乎並沒有做任何事情:

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

這確實改變了IP:

sudo nmcli con mod bond0 ipv4.addresses 192.168.50.10/24 
service network restart 

但在那之後顯然流浪不能自動檢測到IP連接,所以我需要補充:

config.ssh.host = LOCAL_IP 

但是,這裏有問題:在第一次,ip是默認的(.50.50)。所以我不能將config.ssh.host設置爲我想要的IP。如果我省略了config.ssh.host行,它會首次運行,但不會在此之後運行,並且vagrant ssh也會失敗。

有沒有辦法在第一個和第二個vagrant up之間設置盒子ip而不編輯流浪腳本?


編輯vagrant up --debug命令的結果:http://pastebin.com/BTccc4NT


編輯:問題是,從默認框中流浪文件(在Windows上,它在C:\Users\user\.vagrant.d\boxes\nameofbox\virtualbox\Vagrantfile)本身有這個line:

config.vm.network "private_network", ip: "192.168.50.50", auto_config: false 
+0

通常'config.vm.network「private_network」,ip:「192.168.50.10」'應該這樣做,所以可能有別的東西,你有一個規定的腳本,強制IP?你可以運行'vagrant up --debug&> vagrant.log'並將日誌文件放在pastebin的某個位置(該文件將非常大,但會詳細說明正確的命令是否正確運行) –

+0

謝謝。我附上了日誌。我現在無法對此進行額外的調查,明天我會做。我可以看到日誌中出現192.168.50.10字符串,但無法真正說明它的含義。 – trethaller

回答

1

哼,它有點怪怪的,它會創建2個接口

DEBUG network: Normalized configuration: {:adapter_ip=>"192.168.50.1", :auto_config=>false, :ip=>"192.168.50.50", :mac=>nil, :name=>nil, :netmask=>"255.255.255.0", :nic_type=>nil, :type=>:static, :adapter=>2} 
INFO network: Searching for matching hostonly network: 192.168.50.50 
INFO subprocess: Starting process: ["C:/Program Files/Oracle/VirtualBox/VBoxManage.exe", "list", "hostonlyifs"] 

...... 

DEBUG network: Normalized configuration: {:adapter_ip=>"192.168.50.1", :auto_config=>true, :ip=>"192.168.50.10", :mac=>nil, :name=>nil, :netmask=>"255.255.255.0", :nic_type=>nil, :type=>:static, :adapter=>3} 
INFO network: Searching for matching hostonly network: 192.168.50.10 
INFO subprocess: Starting process: ["C:/Program Files/Oracle/VirtualBox/VBoxManage.exe", "list", "hostonlyifs"] 

在適配器2你有192.168.50.50等和適配器3你有192.168.50.10

可能的原因是,您使用的盒具有特定的Vagrantfile,它已經在靜態地址上定義了一個網絡。 (注意,這不是你項目中的Vagrantfile,這實際上是一個Vagrantfile,它將被應用到由這個盒子構建的任何虛擬機上);但是,檢查文件和刪除網絡配置,如果你看到它

由於documented的Vagrantfile從不同位置

在每個級別合併,設置組將與以前的值進行合併。這究竟意味着什麼取決於設置。對於大多數設置,這意味着較新的設置將覆蓋較舊的設置。 但是,對於諸如定義網絡之類的事情,網絡實際上是彼此附加的。默認情況下,您應該假定設置將相互覆蓋。如果行爲不同,將在相關文檔部分註明。

因此,默認情況下,Vagrant將創建額外的網絡接口,並且不會取代來自Vagrantfile的盒子。

+0

你說得對,那裏確實有一個硬編碼的IP。沒有重新包裝盒子的方式來覆蓋它嗎?這些箱子由另一個團隊維護,這樣會更方便。 – trethaller

+0

您可以覆蓋箱子文件夾中的Vagrantfile,它會在您的本地更改,並且沒有任何問題 - 使用該箱子的其他人不會受到本地更改的影響;但所有將默認運行50.50 IP –

+0

對不起,我的意思是,如果我想與我的團隊分享這個,有沒有辦法直接在用戶Vagrantfile中覆蓋這個,還是我必須重新包裝一個沒有硬編碼192.168的盒子.50.50線? (順便說一句,感謝您幫助解決問題,我會獎勵當SO讓我賞金) – trethaller