Vagrantを使ってみる

  • OSX: 10.7.5
  • VirtualBox: 4.3.0 r89960
  • Vagrant: 1.3.5

VirtualBoxのインストール

Vagrantを使うはVirtualBoxが必要なのでインストール.

Vagrantのインストール

gemでインストール出来るんだけど,gemインスコすると1.0.7が入ってしまう.

gem install vagrant

なので,公式から最新版のバイナリを落とす(Vagrant Downloads).

今日(2013/10/24)時点では1.3.5. これを機に再インストールしました.

$ vagrant --version
Vagrant 1.3.5

vagrant box の準備

vagrantはこのboxを元にvmを作成する. 今回はvagrantbox.esで公開されているScientific Linux 6 64 minimalをつかう.

以下のコマンドでboxを取得する.DLするので少し時間がかかる.

vagrant box add base  http://lyte.id.au/vagrant/sl6-64-lyte.box

初期化

initで初期化すると.Vagrantfileが作成される.

vagrant init

ネットワークの設定.

Vagrantfileにネットワーク設定を記述する. config.vm.networkとかでファイル内を検索すると記述する場所がだいたいわかるので,しかるべき場所に書く. これを書くとホストからゲストにアクセスできるようになる. (この設定では動かない可能性があります.詳細は後述

config.vm.network :hostonly, "192.168.50.2"

vagrantの起動

vagrant up

と思ったらエラーがでた.

/Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/plugins/kernel_v2/config/vm.rb:167:in `[]': can't convert Symbol into Integer (TypeError)
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/plugins/kernel_v2/config/vm.rb:167:in `network'
     from /Users/yoshiki_aoki/work/vagrant/Vagrantfile:23:in `block in <top (required)>'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/config/v2/loader.rb:37:in `call'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/config/v2/loader.rb:37:in `load'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/config/loader.rb:104:in `block (2 levels) in load'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/config/loader.rb:98:in `each'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/config/loader.rb:98:in `block in load'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/config/loader.rb:95:in `each'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/config/loader.rb:95:in `load'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/environment.rb:261:in `config_global'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/environment.rb:513:in `block in action_runner'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/runner.rb:28:in `call'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/action/runner.rb:28:in `run'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/environment.rb:274:in `hook'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/lib/vagrant/environment.rb:135:in `initialize'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/bin/vagrant:74:in `new'
     from /Applications/Vagrant/embedded/gems/gems/vagrant-1.3.5/bin/vagrant:74:in `<top (required)>'
     from /Applications/Vagrant/bin/../embedded/gems/bin/vagrant:23:in `load'
     from /Applications/Vagrant/bin/../embedded/gems/bin/vagrant:23:in `<main>'

どうやら先程のネットワーク設定ではだめで,private_network指定すればいいらしい. もう一度Vagrantfileを書き換える.さっき追加した行を置き換える.

config.vm.network :private_network, ip: "192.168.50.2" 

起動したvmにログイン

vagrant ssh

~/.vagrant.dというディレクトリが作成されていて,その中にsshの秘密鍵が作成されている.

ssh -i ~/.vagrant.d/insecure_private_key vagrant@192.168.50.2

これでもいいんだけど./ssh/confgに書いておく. 直接書くこともできるが,

vagrant ssh-config --host vag >> ~/.ssh/config

と書くと追記してくれる(vagは好きな名前をつける).

以降,ssh vagでログイン出来る.

Vagrantの基本操作

  • 起動: vagrant up
  • 終了: vagrant halt
  • vagrantを破壊: vagramt destroy