Vagrantメモ

boxをVagrantbox.esなどで用意
http://www.vagrantbox.es/

 $ vagrant box add {title} {url}

HTTP経由で指定したurlからboxファイルをダウンロードして、{title}で指定した名前で保存されます。{url}はローカルパスでも可。

addしたboxはホームディレクトリ下の.vagrantディレクトに追加される。
boxとVMは対の関係ではないので、どんどん作って削除していい。

プロジェクトのルートディレクトリを作成。ディレクトリ名がVMの名前になる。
ルートディレクトリへ移動後、VMを初期化

 $ vagrant init {title}

{title}はaddしたboxの名前として指定したもの。プロジェクトディレクトリにVagrantfileが作られる

boxからVMをの稼働と起動

$ vagrant up

オプションでプロバイダ(VmwareFusion, AWSなど)を指定して起動できる。

$ vagrant up --provider=vmware_fusion
$ vagrant up --provider=aws

http://lab.raqda.com/vagrant/getting-started/up.html
Vagrant日本語ドキュメント内では以下のようにVagrantfileを編集せよとあるけど、特に設定の必要は無さげ。
日本語ドキュメント

Vagrant.configure(“2”) do |config|
	config.vm.box = “precise32”
end

これが、upしてデフォルトの状態だと。

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
	config.vm.box = "precise32"
end

となってる。

本家のドキュメントを読む限り、バージョンを2か1にを設定する必用があるのだけど、
「1.1+ leading up to 2.0.x」の場合は2に設定せよとある。
現在の最新版が1.3.4なのでこのまま2でOK、となる。
http://docs.vagrantup.com/v2/vagrantfile/version.html


/vagrantディレクトリはプロジェクトのルートディレクトリ、つまりVagrantfileを含むホスト側ディレクトと同期している。そのため、ホスト側のファイルを編集すれば、VM側でそのまま変更が反映される。

プロビジョニング
英和辞典的に言えば「設備の事前準備」みたいな意味。

config.vm.provision :shell; :path => “bootstrap.sh”

みたいに設定を加えれば、shellが走って設定ファイルbootstrap.shの内容が実行される。パスはプロジェクトのルートディレクトリからの相対パス
shefなんかを使えば、もっと複雑で便利なことができる。

コマンド
vagrant box add {title} {url} boxの追加
vagrant box list 追加されているboxのリストを表示
vagrant box remove {title} {provider}
vagrant box repachage {title} {provider}
vagrant status  VMの状態を確認
vagrant suspend VMのサスペンド
vagrant resume サスペンドしたVMのレジューム
vagrant destroy VMの削除
vagrant ssh   VMにvagrantユーザーとしてssh接続