概要
先程、vagrant upがコケる問題についてという記事を書いたので、
ついでにvagrantのVMでNetworkManagerが邪魔でネットワーク設定がうまいこと行っていない。
という時に私が試している方法を書いてみます。役に立つかはわかりません!
※以下、centos6を想定して書いています。
状況
以下の条件で治る場合に試す価値があるかもしれません。
- VM接続してもネットワークの設定がうまく出来ていない。
- systemctlやserviceコマンドでNetworkManagerの状態を確認し、起動している。
- /etc/sysconfig/network-scripts/ifcfg-〇〇のnm_controlledの値をyesにして、NetworkManagerを再起動すると直る。
原因
vagrantは起動時にifcfg-〇〇を書き換えるので、
その際に nm_controlled が No に設定されてしまう。
Vagrantfileでなんとかする
config.vm.provision "shell", run: "always", inline: <<-SHELL
nic_path=/etc/sysconfig/network-scripts/ifcfg-eth1
if grep 'nm_controlled'
then
sed -i 's/nm_controlled=no/nm_controlled=yes/g' $nic_path
else
echo 'nm_controlled=yes' >> $nic_path
fi
service NetworkManager restart
SHELL
※centos7だと nm_controlled はデフォルトで NM_CONTROLLED になっているようなので、上記の書き換えも大文字としてください。
スクリプトを晒すの恥ずかしい。。。けど慣れるまで頑張ります。
2018/9/25追記
どうやら、
Vagrant 1.7.2 + CentOS 7.1.1503 で、private_networkの ip address が消える
や、
Vagrantのprivate_networkをCentOS7.0で設定
等に有るように、VagrantとNetworkManager関連の話は色々合ったようですね。
ただ、私の場合、vagrant1.9辺りを使用していてもnetwork周りがうまく設定されていないことが有ります(治っていそうなものですが...パッチ適用しないとだめなのかな)。
private-ipが振られていなかったり、指定のアドレスとは別のアドレスが振られていたりします。
別のアドレスが振られている場合は、
( https://github.com/hashicorp/vagrant/issues/2968 に書いてあったのを後で見つけましたが、)
if down && if up で今の所解決します。
「CentOS6+NetworkManager」
という構成がややこしいのかもしれません(未だにCentOS6を使うことも多いです)。