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.box
vagrant up
で起動. sshでログインできる.
$ vagrant up
$ vagrant ssh
vagrant suspend
でvagrantを停止、状態はホストOSのdiskに書き出され、次回の起動vagrant resume
は高速に行われる.
vagrant halt
でOSを停止(shutdown).
vagrant destroy
でVMは削除、起動後書き込みされたファイルなどは全て消え去る. 次回起動時は初期イメージ+provisionで設定された状態となる.
$ vagrant suspend
$ vagrant halt
$ vagrant destroy
OSの設定を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: 4567
Private 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_network
config.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
end
vagrant up ubuntu
とかすると最初のゲストOSが起動、全部まとめて起動する場合は引き数なしでvagrant up
でOK. 他のコマンドも同様に引数にvm-nameを渡せばよい.