m-namikiの日記

おもしろき こともなき世を おもしろく

Vagrant + Chefの導入 vol.1

今更ながらローカルで色々試せる環境が欲しいと思ったのでVagrantを導入してみようと思います。詳細な手順についてはググれば色々な方が書いた記事があるので、自分の作業メモとして残しておきます。

VirtualBoxのダウンロード&インストール

https://www.virtualbox.org/wiki/Downloads
上記URLからVirtualBox 4.3.8 for Windows hostsをダウンロードして、インストーラを実行。

Vagrantのダウンロード&インストール

http://www.vagrantup.com/downloads.html
上記URLからWindows版をダウンロードして、インストーラを実行。ファイル名はvagrant_1.5.1.msiです。

OSイメージのダウンロード&追加

https://vagrantcloud.com/discover/featured
Vagrantでは仮想環境で動作させるOSイメージをboxと呼んでいるようです。公式に用意されているboxファイルは上記URLから確認することができます。今回はchef/centos-6.5を利用します。以下のコマンドを実行。

vagrant box add chef/centos-6.5

途中でvirtualboxvmwareのどちらを使うかを聞かれるのでvirtualboxを選択します。後はダウンロードしてくるのを待つのみ。実行結果はこんな感じになります。

C:\Users\m-namiki\Documents\20_vagrant>vagrant box add chef/centos-6.5
==> box: Loading metadata for box 'chef/centos-6.5'
    box: URL: https://vagrantcloud.com/chef/centos-6.5
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) virtualbox
2) vmware_desktop

Enter your choice: 1
==> box: Adding box 'chef/centos-6.5' (v1.0.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/chef/centos-6.5/version/1/provider/virtualbox.box
    box: Progress: 100% (Rate: 1735k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'chef/centos-6.5' (v1.0.0) for 'virtualbox'!

また、自分が利用したいboxが上記にない場合は、下記URLから探すことができます。
http://www.vagrantbox.es/
上記URLから利用したいOSを選択してダウンロードします。インストールしながらダウンロードも可能ですが、かなり時間が掛かるので先にダウンロードしておくと良いです。例えばCentOS 6.4 x86_64 Minimal (VirtualBox Guest Additions 4.2.16, Chef 11.6.0, Puppet 3.2.3)を利用したい場合、下記のURLにアクセスします。
http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box

次にダウンロードしたboxファイルを追加します。上記でダウンロードしたboxファイルを任意のディレクトリに置いて、以下のコマンドを実行します。centos64はbox名です。

C:\vagrant>vagrant box add centos64  CentOS-6.4-x86_64-v20130731.box
Vagrant1.4.Xから1.5.1へアップグレートした場合の注意点

こちらの公式ドキュメントにはアップグレードは上書きするだけとありましたが、自分の環境では上手くいきませんでした。vagrant initするとこんなメッセージが。

C:\Users\m-namiki\Documents\20_vagrant\22_sandbox>vagrant box add chef/centos-6.5
ruby: No such file or directory -- C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.4.0/lib/vagrant/pre-rubygems.rb (LoadError)

どうやらC:\HashiCorp\Vagrant\embedded\gems\gemsに「vagrant-X.X.X」というディレクトリが複数あると、先に読み込んだ方を使うようなので上記のディレクトリにvagrant-1.4.Xというディレクトリが残っている場合は削除した方が良さそうです。

初期化と起動

上記で追加したboxを使用して仮想環境を作成します。

cd C:\Users\m-namiki\Documents\20_vagrant\10_sandbox
vagrant init chef/centos-6.5

実行後Vagrantfileが作成されます。次に仮想サーバを起動します。

vagrant up

vagrantで起動した仮想サーバにはSSHで接続する必要があるので、SSHに対応しているターミナルから以下の接続情報で接続します。

username vagrant
password vagrant
private_key C:\Users\${username}\.vagrant.d\insecure_private_key
port 2222

これで仮想サーバを手に入れることができたので、次回からはChefによる環境構築をやってみようと思います。

VirtualBoxが起動しない場合

これは自宅PCの話なんですが、vagrant upしてもVirtualBox0x80070005というエラーを吐いて起動しないことがありました。どうやらWindowsコンポーネントサービスというのが影響しているようで、下記のURLを参考に設定したら正常に動くようになりました。エラーメッセージなんかもほぼ同じだったので、もし起動しないことがあったら参照してみると良いかもしれないです。
http://yyfor.blog.fc2.com/blog-entry-4.html