OSのベースイメージ. 以下でローカルにprecise32という名前で特定URLからダウンロードして追加する.
$ vagrant box add precise32 http://files.vagrantup.com/precise32.boxダウンロード可能なboxは以下にまとまっている.
vagrant initでVagrantfileのひな形を作成してくれる. 引き数を指定するとconfig.vm.boxやconfig.vm.box_urlをあらかじめセットしてくれる.
$ vagrant init
$ vagrant init precise32
$ vagrant init precise32 http://files.vagrantup.com/precise32.boxvagrant upで起動. sshでログインできる.
$ vagrant up
$ vagrant sshvagrant suspendでvagrantを停止、状態はホストOSのdiskに書き出され、次回の起動vagrant resumeは高速に行われる.
vagrant haltでOSを停止(shutdown).
vagrant destroyでVMは削除、起動後書き込みされたファイルなどは全て消え去る. 次回起動時は初期イメージ+provisionで設定された状態となる.
$ vagrant suspend
$ vagrant halt
$ vagrant destroyOSの設定をvagrant up時に行う.
# Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.provision :shell, :path => "bootstrap.sh"
endこれで起動時にbootstrap.shが実行される. apt-getなどすればpackageがインストールされる.
vagrant provisionでprovisionを再実行、vagrant reloadで起動しなおしてもよい.
Port forwardingを設定すればホストOSの特定ポートへのアクセスをゲストOSの特定ポートへ転送できる.
config.vm.network :forwarded_port, guest: 80, host: 4567Private network(ホストOSからのみアクセス可能)でStatic IPを割り振ることも可能.
config.vm.network :private_network, ip: "192.168.33.10"ゲストOS-1とOS-2をそれぞれ作成し異なるStatic IPを設定すればゲストOS間で通信できることを確認.
Public networkでホストOSと同一ネットワークにDHCPでIP設定される.
config.vm.network :public_networkconfig.vm.defineで異なるゲストOSを定義できる.
Vagrant.configure("2") do |config|
config.vm.define :ubuntu do |ubuntu|
ubuntu.vm.box = "precise32"
ubuntu.vm.network :private_network, ip: "192.168.33.10"
end
config.vm.define :centos do |centos|
centos.vm.box = "centos6_3"
centos.vm.network :private_network, ip: "192.168.33.11"
end
endvagrant up ubuntuとかすると最初のゲストOSが起動、全部まとめて起動する場合は引き数なしでvagrant upでOK. 他のコマンドも同様に引数にvm-nameを渡せばよい.