自前 vagrant box で作成した VM のネットワークがつながらない
環境
Mac
コマンド | 出力 |
---|---|
uname -a |
Darwin xxx-MacBook-Pro.local 16.6.0 Darwin Kernel Version 16.6.0: Fri Apr 14 16:21:16 PDT 2017; root:xnu-3789.60.24~6/RELEASE_X86_64 x86_64 |
vagrant -v |
Vagrant 1.9.3 |
VirtualBox --help |
Oracle VM VirtualBox Manager 5.1.22 |
vagrant plugin list |
vagrant-share (1.1.7) |
vagrant-vbguest (0.14.2) |
VM
コマンド | 出力 |
---|---|
cat /etc/redhat-release |
CentOS release 6.5 (Final) |
uname -a |
Linux xxx 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux |
Vagrantfile
$ cat ./Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
config.vm.box = "xxx.box"
config.vm.define :xxx do |app|
app.vm.hostname = 'xxx'
app.vm.network 'private_network', ip: '192.168.33.52'
app.vm.network 'public_network', bridge: 'en0: air Wi-Fi (AirPort)'
end
config.vm.provider :virtualbox do |v|
v.customize ['modifyvm', :id, '--memory', 1024]
end
end
問題
vagrant のリロード(起動)をすると、下記のようなエラーメッセージが出ます。
$ vagrant reload
==> xxx: Attempting graceful shutdown of VM...
==> xxx: Clearing any previously set forwarded ports...
==> xxx: Clearing any previously set network interfaces...
==> xxx: Preparing network interfaces based on configuration...
xxx: Adapter 1: nat
xxx: Adapter 2: hostonly
xxx: Adapter 3: bridged
==> xxx: Forwarding ports...
xxx: 22 (guest) => 2222 (host) (adapter 1)
==> xxx: Running 'pre-boot' VM customizations...
==> xxx: Booting VM...
==> xxx: Waiting for machine to boot. This may take a few minutes...
xxx: SSH address: 127.0.0.1:2222
xxx: SSH username: vagrant
xxx: SSH auth method: private key
xxx: Warning: Remote connection disconnect. Retrying...
==> xxx: Machine booted and ready!
[xxx] GuestAdditions 5.1.22 running --- OK.
==> xxx: Checking for guest additions in VM...
==> xxx: Setting hostname...
==> xxx: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
# Down the interface before munging the config file. This might
# fail if the interface is not actually set up yet so ignore
# errors.
/sbin/ifdown 'eth1'
# Move new config into place
mv -f '/tmp/vagrant-network-entry-eth1-1498836932-0' '/etc/sysconfig/network-scripts/ifcfg-eth1'
# attempt to force network manager to reload configurations
nmcli c reload || true
# Down the interface before munging the config file. This might
# fail if the interface is not actually set up yet so ignore
# errors.
/sbin/ifdown 'eth2'
# Move new config into place
mv -f '/tmp/vagrant-network-entry-eth2-1498836932-1' '/etc/sysconfig/network-scripts/ifcfg-eth2'
# attempt to force network manager to reload configurations
nmcli c reload || true
# Restart network
service network restart
Stdout from the command:
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0:
Determining IP information for eth0... done.
[ OK ]
Bringing up interface eth1: Determining if ip address 192.168.33.52 is already in use for device eth1...
[ OK ]
Bringing up interface eth2:
Determining IP information for eth2... done.
[ OK ]
Bringing up interface eth3: Device eth3 does not seem to be present, delaying initialization.
[FAILED]
Bringing up interface eth4: Device eth4 does not seem to be present, delaying initialization.
[FAILED]
Stderr from the command:
bash: line 11: nmcli: command not found
bash: line 20: nmcli: command not found
対策を講じる
問題点は、起動できないネットワークがあることなので、エラーの出ているネットワークを確認します。
$ sudo service network restart
起動失敗だと言われた ethX
の設定ファイルを確認します。物は下記の場所にあります。
※ ethX
の X
には数字が入ります。
$ ls -la /etc/sysconfig/network-scripts/ifcfg-*
-rw-r--r-- 1 root root 197 Jun 30 14:52 /etc/sysconfig/network-scripts/ifcfg-eth0
-rw------- 1 vagrant vagrant 213 Jun 30 17:44 /etc/sysconfig/network-scripts/ifcfg-eth1
-rw------- 1 vagrant vagrant 142 Jun 30 17:44 /etc/sysconfig/network-scripts/ifcfg-eth2
-rw-r--r-- 1 root root 254 Jun 30 14:52 /etc/sysconfig/network-scripts/ifcfg-lo
で、中身を確認し、想定どおりでないものをどうにかします。
おそらく、vagrant box のパッケージ元のイメージの設定と vagrant box を使用して作った VM の設定がごっちゃになっているのかなと言う気がします。
なので、重複が発生していたりする場合は、設定ファイルを削除(退避)してあげましょう。
で、下記コマンドを実行します。
$ sudo service network restart
エラーが出なくなったら、下記コマンドでネットワークの設定がちゃんと生きているか確認します。
$ ifconifg
ここで、想定のものが出力されなければ、別の問題があると思われます。
エラーメッセージの一行目の下記の文章を検索するといくつか記事が出てきます。
The following SSH command responded with a non-zero exit status.
/etc/udev/rules.d/70-persistent-net.rules
を削除するなり、/dev/null
のシンボリックリンクにしてしまうなりが必要かもしれません。
まとめ
vagrant box を元に作成した VM では、ネットワークの問題が発生することがよくあるような気がします。
ネットワークの設定がどこにあって、何によって読み込まれてるのかくらいがわかれば、ひとまず自力での調査ができそうです。
あと、vagrant up
(reload) で出力されるエラーに惑わされちゃいかんなって思います。
別の記事でも書かれてましたが、「vagrant を使っている中で出る問題に関して、VM の問題なのか、vagrant の問題なのかちゃんと切り分ける」ことが非常に重要そうです。
判別の方法はよくわからないですが、、、
ホントはちゃんと勉強せんといかんのだろうなと思いつつ、とりあえずの突貫対応が必要な場合もあります。
Author And Source
この問題について(自前 vagrant box で作成した VM のネットワークがつながらない), 我々は、より多くの情報をここで見つけました https://qiita.com/YasuakiNakazawa/items/2c3bb59e8db979ea5e65著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .