5次元のカオス

南の島の学生がつらつらと日々を書き連ねます

Vagrantが起動しなくなった

Vagrantが起動しなくなった

mongodbに引き続いてOS X Mavericksにアップデートしたら、

vagrantが起動しなくなっていた

 エラーメッセージは以下の通り

% local-dev  vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Resuming suspended VM...
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
The VM failed to remain in the "running" state while attempting to boot.
This is normally caused by a misconfiguration or host system incompatibilities.
Please open the VirtualBox GUI and attempt to boot the virtual machine
manually to get a more informative error message.

以下、自分への健忘録としてメモ.

Virtual Boxを再起動する

virtual boxを再起動すると治りました.

% sudo /Library/StartupItems/VirtualBox/VirtualBox restart

しかし、再起動して再度vagrant upをかけてみると以下のメッセージがでる

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to create the host-only adapter
VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory

VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterface, interface IHostNetworkInterface
VBoxManage: error: Context: "int handleCreate(HandlerArg*, int, int*)" at line 68 of file VBoxManageHostonly.cpp

再度、リスタートをかけると大丈夫になるのですが、起動の度にこれでは困る.

Virtual Boxの再インストール

ググってみたところ、以下のような対処を発見

Mac OS X Mavericks で Vagrant がこける時の対処法

泣く泣く、再インストールを決意しました.

ついでに、virtualboxのバージョンが更新されていたのでアップグレードをかけました

アップグレードの方法は、virtualbox公式サイトから

最新版をDLしてきた後、導入時と同じようにインストールすれば大丈夫です.

vagrantのアップグレード

再びvagrant upを実行すると下記の様なメッセージ

Vagrant has detected that you have a version of VirtualBox installed
that is not supported. Please install one of the supported versions
listed below to use Vagrant:

4.0, 4.1, 4.2

※ ネットが無いから放置しすぎました?

vagrantの日本語のドキュメントを参考に古いバージョンのVagrantを削除します

Vagrantプログラムの削除

rm -rf /Applications/Vagrant
rm -rf /usr/bin/vagrant

その後、公式サイトから最新版のパッケージをDLして

インストールすれば更新完了です.

%local-dev  vagrant -v
Vagrant 1.3.5

再びvagrant up

~ 省略 ~

Guest Additions Version: 4.2.12
VirtualBox Version: 4.3
[default] Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

touch /etc/sysconfig/network-scripts/ifcfg-eth1

Stdout from the command:

Stderr from the command:

bash: sudo: command not found

sudoコマンドが見つからない?

とのことなので、sudoをインストールします.

sudoコマンドのインストール

CentOS 5 で IPv6 を本当に無効にするの記事を参考にインストールしていく

IPv6の設定

/etc/sysconfig/network に下記を追記

NETWORKING_IPV6=no 

/etc/modprobe.confに下記を追記

alias ipv6 off
alias net-pf-10 off

chkconfigをIPv6をoffにする

/sbin/chkconfig ip6tables of    

※ これをやっておかないと [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host ~ といったように   ホストを解決できなくなる問題がおきました. 結構厄介な問題...

マシンを再起動

sudoコマンドをインストール

yum install sudo -y

vagrant halt 実行時にエラー

~ 省略 ~
sudo: sorry, you must have a tty to run sudo

しかし、vagrant sshでやupはできるようなので謎.

調べてみたところ, 下記のような記事を発見

vagrant up したらエラー「sudo: sorry, you must have a tty to run sudo」が出たときの対処方法

どうやら、クラッキング目的での侵入者対策のために、sudoされないようにするということが起こっていたようです.

/etc/sudoersによりrequirettyを検索し、その下の行に下記を追加

Defaults:vagrant !requiretty

またはローカルのマシンなのでコメントアウトしてしまうという手もあるよう

# Defaults requiretty

以上で解決.

なんだかんだで、色々と手間がかかってしまった.

環境構築するのが仕事みたいになってきてて辛い... もう少しこういうのをサクッとできるようにしたいと思う.

vagrant コマンド

しかし、vagrant色々触る上で色々とコマンドだけは覚えてしまった.

よく触ったやつをメモ

# 状態確認
% vagrant status

# 起動
% vagrant up

# 終了
% vagrant halt

# 削除
% vagrant destory

# 再起動
% vagrant reload

# ssh接続
% vagrant ssh

参考