Vagrantでネットワーク設定を変えても反映されなかった原因

veeweeで作ったオレオレCentOS5 boxのネットワーク設定をhost-onlyに変えてreloadしてみたらエラーが出てinterfaceが上がらなかった。他のboxだと問題ないので、OS側で何か設定し忘れたのかなーと調べてみたら余計な設定が入っていたというお話。

Vagrantfile

Vagrant.configure("2") do |config|
  ・・・
  config.vm.network :private_network, ip: "192.168.33.10"
  ・・・
end

実行結果

$ vagrant reload

・・・

The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

cat /tmp/vagrant-ifcfg-eth1 > /etc/sysconfig/network-scripts/ifcfg-eth1

このエラーだけ見ても原因がさっぱり分からない。

LOGレベルをDEBUGにしてもう一度reloadしてみると

$ VAGRANT_LOG=DEBUG vagrant reload

・・・

 INFO ssh: Execute: touch /etc/sysconfig/network-scripts/ifcfg-eth1 (sudo=true)
DEBUG ssh: stdout:
DEBUG ssh: Exit status: 0
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: sed -e '/^#VAGRANT-BEGIN/,/^#VAGRANT-END/ d' /etc/sysconfig/network-scripts/ifcfg-eth1 > /tmp/vagrant-ifcfg-eth1 (sudo=true)
DEBUG ssh: stdout:
DEBUG ssh: Exit status: 0
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: cat /tmp/vagrant-ifcfg-eth1 > /etc/sysconfig/network-scripts/ifcfg-eth1 (sudo=true)
DEBUG ssh: stderr: bash: line 2: /etc/sysconfig/network-scripts/ifcfg-eth1: cannot overwrite existing file

DEBUG ssh: stdout:
DEBUG ssh: Exit status: 1
ERROR warden: Error occurred: The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

・・・

>で上書きが出来ずにエラーとなっていた。
 あー・・・これはよく見るやつだ。と /root/.bashrc を見てみるとしっかりと

set -o noclobber

と書いてあったので、これをコメントアウトして解決。

ちなみにこの設定、デフォルトでは入っていないんだけど、いつもセットアップに使っているスクリプトで追記されるようになっていたのでこんなことに。うっかりミスを防ぐためにはいいんだけど、人の作ったスクリプト実行するときはちょくちょく弊害となる。