Hatena::ブログ(Diary)

エンジニアきまぐれTips

2013-05-10

Vagrant (1.0 系) のベースBOX作成手順 (Debian wheezy)

Vagrant のベースBOX 作成手順をネットで探すとたいていの場合、 veewee を使用していますが、無理に使用する必要はありません。

全自動化できれば便利ではあるのですが、個人的には手作業で作成するほうが手軽で気に入っています。

http://d.hatena.ne.jp/okinaka/20110805/1312474847

で一連の流れはつかめていましたが、Debian wheezy リリースに伴い、Vagrant のベースBOX を久々におさらいしてみました。

なお Vagrant のバージョンは、1.0.7 です。(1.2 系はまだ試していません。)

VirtualBox の画面から仮想マシンの新規作成

名前debian-wheezy
OS Linux
バージョンDebian(64bit)
インメモリ 512 MB
チップセット PIIX3
オーディオ 無効
USB 無効
ネットワーク NAT
ストレージ(HDD) 80GB (動的拡張VMDK形式)
ストレージ(CDROM) インストールDVDイメージを割り当て(インストール時のみ)

ストレージコントローラの設定で、「ホストのI/Oキャッシュを使う」にチェックを入れると、アクセスが格段に速くなります。物理ディスクには非同期に書き込まれることになるので、信頼性は落ちますが、テスト環境構築が目的なのでパフォーマンスを優先します。

仮想マシンDebian wheezy をインストール

なるべく最小構成になるように注意しつつ通常通りインストールします。

インストール後の作業

rootログインして、Vagrant 仕様にセットアップします。

パッケージ更新

今回はネットワークインストール版を使用したので、最新の状態になっているため不要でした。

ビルド用パッケージ

Chef や VirtualBox Guest Addition インストールのために必要なパッケージをインストール

 $ apt-get install curl ruby ruby-dev build-essential linux-headers-amd64
Chef

Chef のインストール。今回は、chef10.x 系を利用したかったためバージョンを指定しています。

 $ gem install -v 10.26.0 chef --no-ri --no-rdoc
Guest Addition

VirtualBox の [デバイス]-[GuestAdditionインストール]を選択する。

GuestAddition のインストール

 $ mount /dev/cdrom /mnt
 $ bash /mnt/VBoxLinuxAdditions.run
パッケージ削除

VMサイズ削減のため、可能な限り不要なパッケージは削除します。

sudo

パスワードなしで sudo できるようにします。

コマンド:

 $ visudo

設定内容:

%sudo ALL=(ALL) NOPASSWD:ALL
openssh

openssh サーバの設定を変更。ログイン時間が短縮されるらしいです。

 $ echo 'UseDNS no' >> /etc/ssh/sshd_config
vagrant ユーザ

vagrant ユーザに、sudo 権限を付加、ssh 公開鍵認証でログインできるようにします。

 $ gpasswd -a vagrant sudo
 $ mkdir /home/vagrant/.ssh
 $ chmod 700 /home/vagrant/.ssh
 $ cd /home/vagrant/.ssh
 $ curl 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' > authorized_keys
 $ chown -R vagrant:vagrant /home/vagrant/.ssh
VM コンパクト化

VM イメージのコンパクト化のためのおまじない

 $ dd if=/dev/zero of=/EMPTY bs=1M || rm /EMPTY

Vagrant パッケージ化

仮想マシンをシャットダウンした後、ホストマシン上でベースBOXのパッケージ化します。

 vagrant package --base debian-wheezy

package.box が生成されます。ファイルサイズは 230MB 程度になりました。

2013-04-02

vagrant init の第2パラメータでちょっと楽する

久々の Vagrant ネタ。

Vagrantfile に ダウンロードURL (box_url) を設定しておくことで、 vagrant up 実行時にベースBOXが無かった場合は BOX を自動的にダウンロードしてくれるので、初回の vagrant box add が省略できて重宝している。

複数人での開発の際、この設定(box_url)は、WEBサーバー上に BOX を配備することと共に必須の設定だと思う。

今までは vagrant init 直後に Vagrantfile を編集して設定を追加していたのだが、いつからか vagrant init の第2パラメータで指定できるようになったようだ。空の状態から2ステップで仮想マシンが起動できるのでちょっと便利になった。

$ vagrant init precise32 http://files.vagrantup.com/precise32.box
$ vagrant up

vagrant 1.0.7 で vagrant init したところ、Vagrantfile に以下の設定が有効になる。

  config.vm.box = "precise32"
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"

2012-10-20

vagrant package の注意点

OSWindows 7 (64bit)
VirtualBox 4.2.2
Ruby 1.9.1
Vagrant 1.0.5

Windows 7 にて vagrant package で作成した BOX をベースに vagrant up すると、 共有フォルダ (v-root) が作成時の古い設定のままになっていて困った。

  1. vagrant halt で VM を一旦停止
  2. GUI ツールで共有フォルダの設定を削除
  3. vagrant package を実行

という手順でやればとりあえずうまく行くようになった。MacOS X 環境では再現しなかったので、 Windows 特有の問題だと思う。

2012-09-25

Vagrant 1.0.5 リリース!

VirtualBox 4.2 対応の Vagrant 1.0.5 がリリースされていました。

VirtualBox 4.2 + Windows 7 で問題なく動作しています。

http://www.vagrantup.com/

VirtualBox 4.2.1 は、MacOS X 10.8 (Mountain Lion) 対応しているらしいので、そろそろ Mountain Lion にアップグレードしてみようか検討中。