Skip to content

Instantly share code, notes, and snippets.

@kozy4324
Last active September 15, 2016 06:08
Show Gist options
  • Save kozy4324/5728364 to your computer and use it in GitHub Desktop.
Save kozy4324/5728364 to your computer and use it in GitHub Desktop.
Vagrantめも

Vagrant

box

OSのベースイメージ. 以下でローカルにprecise32という名前で特定URLからダウンロードして追加する.

$ vagrant box add precise32 http://files.vagrantup.com/precise32.box

ダウンロード可能なboxは以下にまとまっている.

http://www.vagrantbox.es/

initと起動

vagrant initVagrantfileのひな形を作成してくれる. 引き数を指定するとconfig.vm.boxconfig.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

provision

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で起動しなおしてもよい.

Networking

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

Multi-Machine

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を渡せばよい.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment