VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

公開日: : プログラム ,

配布されている Vagrant の Box ファイルを使って検証環境を構築することが多くなってきた。CentOS がインストール済みの Box ファイルを使っているので手間が省けて助かるのだが、毎回実行している設定やインストールしているソフトウェアがあり、その作業が煩わしい。
この作業も省きたいので、元の Box ファイルに設定の追加やソフトウェアをインストールした独自の Box ファイルを作成してみた。

icatch-vagrant_box_customize

目次

1. ソフトウェアのバージョンとベースにした Box ファイル

主なソフトウェアのバージョンは以下の通り。

【ホスト OS】

  • OS: OS X Yosemite 10.10.5
  • VirtualBox: 5.0.0
  • Vagrant: 1.7.4
  • Box ファイル:http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box

Box ファイルのダウンロードは以下のコマンドで行う。

$ vagrant box add centos6.4_64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box

【ゲスト OS】

  • OS: CentOS 6.4(64ビット)

2. 前提

  • 上記の Box ファイルを使って VirtualBox 上に仮想環境(CentOS 6.4)が構築されていること

3. カスタマイズ内容

上記の Box ファイル CentOS-6.4-x86_64-v20130731.box に以下を行った。

  1. yum を使ったパッケージのアップデート
  2. zsh のインストール
  3. Git を最新バージョンにアップデート

以下、簡単な補足。

3-1. yum を使ったパッケージのアップデート

yum -y update を実行してインストールされている全てのパッケージを最新にアップデートした。

また、依存パッケージの不足が原因でライブラリのインストールに失敗すると少々面倒に感じる。検証用の環境なので以下を実行して開発用パッケージを一括してインストールした。

$ yum -y groupinstall 'Development tools'
$ yum -y groupinstall 'Additonal Development'

3-2. zsh のインストール

コマンド履歴を活用したいのが主な理由で zsh をインストールした。vagrant ユーザのログインシェルも /bin/zsh に変更してある。

3-3. Git を最新バージョンにアップデート

インストールされていた Git のバージョンが 1.7.1 で少々古い。2015/10/19 時点で最新の 2.6.2 にアップデートした。

4. Box ファイルの作成

以上の設定を施した CentOS を Box ファイルにパッケージングする。

CentOS からログアウトして OS をシャットダウンする。

$ vagrant halt

次にパッケージング。vagrant package を実行する。

$ vagrant package
==> default: Clearing any previously set forwarded ports...
==> default: Exporting VM...
==> default: Compressing package to: /path/to/package.box

処理が完了するとカレントディレクトリに package.box が作成されるので、必要に応じてリネームしたり、ディレクトリを移動したりする。
この package.box を Vagrant に登録する。以下は、package.box を tomoyamkung_centos_64_base という名前で登録するコマンド例。

$ vagrant box add tomoyamkung_centos_64_base package.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'tomoyamkung_centos_64_base' (v0) for provider:
    box: Unpacking necessary files from: file:///path/to/package.box
==> box: Successfully added box 'tomoyamkung_centos_64_base' (v0) for 'virtualbox'!

これで Vagrant に登録された。次回からは以下のコマンドを実行して仮想環境を作成できる。

$ vagrant init tomoyamkung_centos_64_base

5. 更新履歴

  • 2015/10/19: 初版作成

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

icatch-medium_4301351732-resized

mp3splt を実行して “undefined symbol: mp3splt_u_check_if_directory” と出力されたときの対処法

mp3 ファイルを分割してくれる mp3splt というライブラリがあります。 mp3 ファイルを

記事を読む

no image

no space left と表示されたときの対処法

タイトルの "no space left" とは「書き込みたいけど、ディスクの飽

記事を読む

icatch-8587724648_24926df337_z-resized

yum のリポジトリ ATrpms を参照できるように設定する

あるツールの動作検証をしようと調べたところ、そのツールは ATrpms リポジトリが提供しているとの

記事を読む

icatch-9214710040_822a4c3456_z-resized

ロードアベレージを監視するシェルスクリプトを作成してみた

このブログを運用している Linux サーバの負荷が高い状態になってました。 何か被害にあったとかで

記事を読む

icatch-_9692711856-resized

シェルスクリプトでメールを送信する

このブログを運用している Linux サーバの監視スクリプトを作成した記事を書きました。 ロード

記事を読む

no image

より安全にパスワードを保存するために考えること

知ってる人にとっては当たり前のことだろうが、あまり深く考えたことがなかったので調べてみた。 前提

記事を読む

icatch-2015-002

Optionalから値を取り出すにはorElseGet()を使う

「Optional が値を持っていない場合のみ ◯◯ を実行する」を実装するときは Optional

記事を読む

icatch-vacuum_9060011568_mini-thumbnail

GitHub にアップされているブランチをローカルに取り込む

GitHub に限らず、会社や自分で Git のサーバを使った場合にも当てはまりますが、毎回同じこと

記事を読む

icatch-back-scratcher_3553512020_mini-thumbnail

Sublime Text3 で JavaScript を書くために設定したプラグインとキーバインド

プロフィール にもあるように、ボクは Java をメインとしたプログラマです。 IDE には Ecl

記事を読む

no image

CVS でタグ間で変更があったファイルを抽出するスクリプト

今どきバージョン管理ツールに CVS を使っているところは珍しいと思うし、あまり需要はないだろうけど

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


7 + 三 =

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑