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
コマンド:
$ 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 の注意点
| OS | Windows 7 (64bit) |
|---|---|
| VirtualBox | 4.2.2 |
| Ruby | 1.9.1 |
| Vagrant | 1.0.5 |
Windows 7 にて vagrant package で作成した BOX をベースに vagrant up すると、 共有フォルダ (v-root) が作成時の古い設定のままになっていて困った。
- vagrant halt で VM を一旦停止
- GUI ツールで共有フォルダの設定を削除
- vagrant package を実行
という手順でやればとりあえずうまく行くようになった。MacOS X 環境では再現しなかったので、 Windows 特有の問題だと思う。
2012-09-25
Vagrant 1.0.5 リリース!
VirtualBox 4.2 対応の Vagrant 1.0.5 がリリースされていました。
VirtualBox 4.2 + Windows 7 で問題なく動作しています。
VirtualBox 4.2.1 は、MacOS X 10.8 (Mountain Lion) 対応しているらしいので、そろそろ Mountain Lion にアップグレードしてみようか検討中。
2012-06-14
Vagrant 1.1 以降は、RubyGems での配布停止、パッケージのみ提供
らしい・・・。意見を募集中とのこと。いろいろ理由が書いてあるので後で読む。
https://groups.google.com/forum/#!topic/vagrant-up/kX_wvn7wcds/discussion