VirtualBox + Vagrant

Ubuntu 12.04 Server に VirtualBox + Vagrant を入れ、instanceを作ったり消したり簡単にできるようになった。 素晴らしい。

VirtualBox インストール

VirtualBoxレポジトリを /etc/apt/sources.list に追加して、apt-getでインストール。Ubuntu じゃない他のlinuxやmacでやる場合は適当に変える。

$ sudo sh -c "echo 'deb http://download.virtualbox.org/virtualbox/debian precise contrib' >> /etc/apt/sources.list"
$ sudo apt-get update
$ sudo apt-get install virtualbox-4.2

Vagrant インストールしてinstance作ってそこに入る

前提としてVagrantはRubyで書かれているものなのでRubyをなにかしらの方法で入れておく。 僕はrvmを利用してruby1.9.3をroot権限が必要ないところにインストールしてある。

$ gem install vagrant
$ vagrant box add precise32 http://files.vagrantup.com/precise32.box
$ mkdir ~/vagrant-sample
$ cd ~/vagrant-sample
$ vagrant init precise32
$ vagrant up
$ vagrant ssh

いくつか説明する。

  • boxというのはvagrantでいうところのイメージファイルのこと。これをもとにインスタンスをつくる。
  • 2行目のコマンドで http://files.vagrantup.com/precise32.box からboxをダウンロードしてきて、precise32 と言う名前で保存している。
  • precise32(ubuntu12.04 32bit) をダウンロードしたが、http://www.vagrantbox.es/ から好きなものを選べる。
  • vagrant init precise32 でカレントディレクトリに Vagrantfile という名前の設定ファイルを作る。そこには precise32というboxファイルを使うことが書いてある。その他の設定項目がある場合このファイルに書く。
  • vagrant up でカレントディレクトリの Vagrantfile に基づいて、インスタンスを作り起動させる。
  • vagrant sshインスタンスsshで接続。

その他

  • localのファイルをインスタンスに持っていきたいときは下のようにする。パスワードは多分vagrant
$ scp -P 2222 local_file vagrant@localhost:/home/vagrant
  • インスタンスいらなくなったらそれを定義してるVagrantfileがあるところに移動して vagrant destroy
  • boxファイルをつくることもできる。簡単なやり方はすでにあるものをカスタマイズして作るもので、
user@local $ cd ~/vagrant-sample
user@local $ vagrant up
user@local $ vagrant ssh

vagrant@precise32 $ vi .bashrc
...
vagrant@precise32 $ sudo apt-get install ....
...
# その他自由に
vagrant@precise32 $ exit

user@local $ vagrant package --output mycustom.box
user@local $ vagrant box add mycustom mycustom.box

でいい。次回は

$ mkdir ~/vagrant-sample2
$ cd ~/vagrant-sample2
$ vagrant init mycustom
$ vagrant up
$ vagrant ssh

でいける。