inexio(アイネクシオ)

私たちはネットワークから新しいアイデアを創出します

Vagrantで独自boxの作成

      2017/11/06

以前、『Ubuntu 15.04にVirtualbox、Vagrantをインストール』でインストールをまとめてみましたが、チームで開発などするときは同じ環境を用意しなければなりません。
当然ですが、配布されているboxイメージではなく、チーム用だったり、ソフトウェア用に準備したものを利用する可能性の方が高かったりするわけです。

そこで、独自にbox化する方法をまとめてみました。
『説明が足りない』と知人から突っ込まれたこともありますが、端的に知りたいこと(ここでいうbox作成)だけをまとめてあるとこが見当たらなかったこともあるし。

目次

OSの準備を行う

OSの公式サイトからisoイメージをダウンロードしてきても、配布されているboxファイルから準備しても、その方法は何でも構いませんが、とりあえず提供したい環境を整えます。
そしてOSをアップデートしておいたり、開発に必要なコンパイラや環境を整えておきます。

MACアドレスの解除

このままだと、MACアドレスが固定されて起動時にネットワークエラーが発生するため、udevルールを無効化しておきます。

$ sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

最適化

boxサイズを可能な限り小さくしたり、圧縮効率を上げるために、以下を実行する。
フラグメンテーションの解消ということで、ゼロ埋めしたファイルを作成して削除するとのこと。
これは以下のサイトで知った。大変参考になりました。
VagrantでオリジナルBoxを作成する

$ sudo yum clean all

$ sudo dd if=/dev/zero of=/EMPTY bs=1M
$ sudo rm -f /EMPTY

boxのパッケージ化

以下のコマンドでboxをパッケージ化することができる。
カレントディレクトリに『package.box』ファイルが作成されるが、これが目的のboxファイルだね。
このファイルが本体となります。

ちなみに仮想マシンが起動していると自動的に終了します。

$ vagrant package

そして以下のコマンドでboxを追加することができます。

$ vagrant box add ボックス名 ./package.box

まとめ

非常に簡単に開発環境を統一することができます。
本来時間を費やしたい開発に、ガンガン時間を費やすことが可能ですね!
本当に喜ばしいことですな!

 - CentOS, Ubuntu, 開発環境 ,