Veeweeを使ってVagrant用仮想マシンイメージを作成する

1004-01

はじめに

以前のエントリ開発者必見!仮想環境の構築を自動化する方法とはでは、Packerおよび、Vagrantを使用した仮想化インフラの自動化の方法について解説しました。今回は、前回紹介できなかったもう一つの自動化ツールであるVeeweeのインストールからVirtualBox用の仮想マシンイメージ(Box)の作成などについて解説します。

Veeweeとは

Veeweeは、jedi4ever(Patrick Debois)氏が2010年に開発を始めたVagrant用の仮想マシンイメージ(Box)を作成するツールです。作成可能なBoxは、VirtualBox, VMware(Fusion),KVM,Parallelsとなっており、仮想化ソフトウエアのデファクトスタンダードととも言えるVMwareおよび、VirtualBox用のBoxを簡単に作成することができます。余談ですが、作者のハンドルネームであるjedi4everは、「JEDI FOREVER」と読めますので、スター・ウォーズの熱烈なファンなのかも知れません。

Veeweeのインストール

今回、Veeweeをgithub(ギットハブ)から最新のパッケージを取得してインストールを行います。また、Veeweeはオブジェクト指向言語Rubyで実装されているため、rubyがインストールされている必要があります。その他にも、Veeweeをインストールするには、必要となるさまざまなソフトウエアを導入する必要があります。下記の環境にてVeeweeのインストールを行います。

種別 ソフトウエア
ホストOS Windows 7 Ultimate
UNIX環境 Cygwin 1.7.25
仮想化ソフトウエア VirtualBox 4.2.18 r88780
自動化ソフトウエア Vagrant 1.2.7
Ruby ruby 1.9.3p448 (2013-06-27) [i386-mingw32]
Git(ギット) git version 1.8.4.msysgit.0
OpenSSH OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
Veewee veewee (0.3.8.dev)
  1. VirtualBoxのインストール

VirtualBoxのインストール方法については、VirtualBoxの導入からOSインストールまでのチュートリアル解説を参照して下さい。

  1. Vagrantのインストール

Vagrantのインストール方法については、開発者必見!仮想環境の構築を自動化する方法とはを参照して下さい。

  1. Gitのインストール

msysgitの中から、Full installer for official Git for Windows 1.8.4をインストールします。

①ダウンロードしたインストーラーを起動します。

Gitインストーラーの起動1
Gitインストーラーの起動2
Gitインストーラーの起動3


②Select Componentsでは「Additional icons」を選択します。
Additional iconsを選択
Additional iconsを選択

③Adjusting your PATH environmentでは、
「Run Git and included Unix Tools from the Windows Command Prompt」を
 選択します。警告として「Windowsツールのfind.exeとsort.exeが上書きされる..」
 とありますが、Git専用のコマンドプロンプトを使用しますので無視して構いません。

「Run Git and included Unix Tools from the Windows Command Prompt」を選択

④Configuring the line encoding Conversionsでは、
 「Checkout as-is,commit Unix-Style line encodings」を選択します。
 デフォルトのままだと、githubからcheckoutした全てのファイルの改行コードが
 Windowsの行末コードLR+LFに変換されてしまい、rubyコマンドの実行時にエラーと
 なりますので、注意して下さい。

「Checkout as-is,commit Unix-Style line encodings」を選択

⑤インストールが開始され、デスクトップおよび、スタートメニューにGit Bash
  ショートカットが登録されます。
インストール開始

インストール終了

ショートカットが作成されます


⑥Git Bashの起動
 デスクトップから、Git Bashのショートカットをクリックすると、Git Bash専用の
 コマンドプロンプトが表示されますので、sshおよび、gitコマンドが実行できるか
 確認します。スクリーンショットでは、ショットのプロパティの作業フォルダを
 D:\Veeweeに変更しています。

$ ssh -V
$ git --version

Git Bashの起動
  1. Ruby for Windowsのインストール

RubyInstaller for Windowsから、Ruby 1.9.3-p448をダウンロードし、任意のフォルダに解凍します。なお、ダウンロードされるアーカイブが7-ZIP形式で圧縮されていますので、ExpLZHなどを使って解凍し、解凍したフォルダ中のbinフォルダにPATHを通します。ここでは、D:\Veeweeに解凍を行い、D:\Veewee\ruby\binにPATHを通しています。Git Bashを起動し、rubyおよび、gemコマンドが実行できるか確認します。

$ ruby -v
$ gem -v
コマンドが実行できるか確認
  1. Devkitのインストール

Devkitは、rubyの拡張機能をインストールする際に必要となりますので、必ずインストールして下さい。

①Devkitの解凍
RubyInstaller for Windowsから、
DevKit-tdm-32-4.5.2-20111229-1559-sfx.exeをダウンロードし、任意のフォルダに
解凍します。ここでは、D:\Veeweeに解凍しています。
Devkitの解凍
②Devkitの初期化
①で解凍したフォルダに移動し、以下のコマンドを実行します。
$ ruby dk init

初期化が成功すると、下記のメッセージが表示されます。
Devkitの初期化

初期化が成功しても、Rubyの場所を検出できない場合がありますので、
その場合config.ymlを編集してRubyの場所を指定します。
- d:\Veewee\ruby
Rubyの場所を指定
Rubyの場所を指定

編集内容が正しいか、以下のコマンドを実行して確認します。
$ ruby dk.rb review
編集内容の確認

指定したRubyの場所が出力されます。

もし、config.ymlの内容に不備があった場合、下記のメッセージが表示されます。
内容に不備があった場合のメッセージ
$ ruby dk.rb review
内容に不備があった場合のメッセージ
③Devkitのインストール
 ①で解凍したフォルダに移動し、以下のコマンドを実行します。
$ ruby dk.rb install
Devkitのインストール

config.ymlで指定した場所に、devkit.rbがインストールされます。

④bundlerのインストール
bundlerは、gemコマンドでインストールしようとするソフトウエアの依存関係を
チェックして、インストールエラーが発生しないソフトウエアの組み合わせを試行
してインストールしてくれるコマンドですので、必ずインストールして下さい。
Git Bashシェルを起動して、以下のコマンドを実行します。

$ gem install bundler --no-rdoc --no-ri
コマンドを実行

  1. Veeweeのインストール

ここまでで、Veeweeをインストールする際に必要となるソフトウエアが全てインストールされましたので、Git Bashを起動しインストールします。

①Veeweeの最新パッケージを取得する。
$ git clone git://github.com/jedi4ever/veewee.git

最新パッケージを取得する

②Veeweeをインストールする。
$ cd veewee/
$ bundle install
Veeweeをインストールする1
Veeweeをインストールする2

以上で、Veeweeのインストールが終了します。

仮想マシンイメージの作成

  1. 作成可能なBox名の取得

Veeweeでは、予め作成可能なBoxテンプレートの一覧が取得できますので、最初にテンプレート一覧を以下のコマンドを実行して取得します。

$ cd veewee
$ bundle exec veewee vbox templates
テンプレート一覧を取得

実行すると、執筆時点で167行のBoxリストが出力されましたので、この中から作成するBoxを選択します。なお、出力されるリストは、そのままBox作成時のコマンドライン引数として利用できます。今回は、CentOS-6.4-i386-minimalをテンプレートとして使用します。 作成するBoxを選択

  1. Boxの作成

作成するBoxが決定したら、Box一覧の行のを任意の名前に変更して実行します。

(修正前)
veewee vbox define '' 'CentOS-6.4-i386-minimal' --workdir=d:/Veewee
/veewee
(修正後)
veewee vbox define 'veewee-centos64-minimal' 'CentOS-6.4-i386-
minimal' --workdir=d:/Veewee/veewee

修正が完了したら、veewee実行時のコマンドライン引数として実行します。

$ bundle exec veewee vbox define 'veewee-centos64-minimal' 'CentOS-
6.4-i386-minimal' --workdir=d:/Veewee/veewee

veewee実行時のコマンドライン引数として実行 実行が成功すると、definitionsフォルダ下に以下のファイルが生成されます。 ファイルが生成

作成するBoxの設定をカスタマイズする場合、これらのファイルを編集します。ここでは、日本語環境でインストールするようにks.cfgを修正します。ks.cfgは、CentOSの自動インストールの際に使用される設定ファイルです。ks.cfgの詳細については、Starting a Kickstart Installationを参照して下さい。

(修正前)
lang en_US.UTF-8
keyboard us
timezone UTC
(修正後)
lang ja_JP.UTF8
keyboard jp106
timezone Asia/Tokyo

1007-30

次に、仮想マシンのカスタマイズを行うため、definition.rbを修正します。ここでは、CPU数、RAMサイズ、ISOイメージファイルのロケーションを修正します。

(修正前)
:cpu_count => '1',
:memory_size=> '480',
:iso_src => "http://yum.singlehop.com/CentOS/6.4/isos/i386/CentOS-
6.4-i386-minimal.iso",
(修正後)
:cpu_count => '2',
:memory_size=> '1024',
:iso_src => "ftp://ftp.iij.ad.jp/pub/linux/centos/6.4/isos/i386
/CentOS-6.4-i386-minimal.iso",

1007-31

修正が完了したら、veewee vbox buildを実行します。

$ bundle exec veewee vbox build veewee-centos64-minimal

指定したBoxのビルドが開始され、definition.rbで指定したiso_srcからISOファイルをダウンロードするかを聞いて来ますので、Yesを入力します。

Yesを入力

ISOイメージのダウンロードが終了すると、VirtualBoxが起動されCentOSのインストールが自動的に実行されます。

CentOSのインストールが自動的に実行

しばらくすると、OSのインストールが完了しBoxの再起動後、Veeweeによるプロビジョニングが実行されます。

Veeweeによるプロビジョニングが実行

Boxのビルドが成功すると、下記のメッセージが表示されます。

The box veewee-centos64-minimal was built successfully!
You can now login to the box with:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p
 7222 -l veewee 127.0.0.1

メッセージ

  1. Boxのシャットダウン

インストールが終了しても、Boxは起動したままの状態となっていますので、Boxにログインして、シャットダウンします。 Boxにログイン

ログインアカウントは、下記の3つのアカウントが作成されています。

UID PASSWORD
vagrant vagrant
veewee veewee
root vagrant

1007-37 1007-38 1007-39

以上で、Boxの作成が終了します。

Vagrant Boxへの変換

Veeweeで作成したBoxは、VirtualBoxには追加されており、このままではVirtualBoxからは起動できますが、Vagrantから起動することができません。このため、Veeweeで作成したBoxをVagrant用のBoxファイルに変換します。

$ bundle exec veewee vbox export veewee-centos64-minimal

Vagrant用のBoxファイルに変換

以上で、Veeweeが作成したBoxをVagrantで起動できるBoxに変換できます。

Vagrant Boxの起動

VeeweeによってエクスポートされたBoxは、カレントフォルダに保存されますので、以下の手順でVagrantから起動できます。

①任意のフォルダを作成し、Vagrantを初期化します。
$ vagrant init veewee-centos64-minimal

②エクスポートされたBoxを追加します。
$ vagrant box add veewee-centos64-minimal /d/Veewee/veewee/veewee-
centos64-minimal.box

③追加したBoxを起動します。
$ vagrant up
追加したBoxを起動1
追加したBoxを起動2

④起動したBoxに接続します。
$ vagrant ssh

以上で、Veeweeで作成したBoxを起動できます。Box起動後は、shutdownコマンドで
Boxを停止します。

⑤起動したBoxを停止します。
$ sudo shutdown -h now
起動したBoxを停止1
起動したBoxを停止2

まとめ

ここまで、VeeweeのインストールからVirtualBox用の仮想マシンイメージ(Box)の作成などについて解説しました。Veeweeを使ったBox自動化では、作成されたBoxを手動で停止することが必要になりますが、テンプレートを利用してさまざまなBoxを作成できます。また、テンプレート作成時に生成される設定ファイルをPackerで利用することも可能ですので、組み合わせて利用することで、より柔軟に自動化を行うことができます。

コメントを残す

メールアドレスが公開されることはありません。