(Photo by:University of the Fraser Valley)
はじめに
以前のエントリ開発者必見!仮想環境の構築を自動化する方法とはでは、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) |
- VirtualBoxのインストール br>
VirtualBoxのインストール方法については、VirtualBoxの導入からOSインストールまでのチュートリアル解説を参照して下さい。 - Vagrantのインストール br>Vagrantのインストール方法については、開発者必見!仮想環境の構築を自動化する方法とはを参照して下さい。
- Gitのインストール br>
msysgitの中から、Full installer for official Git for Windows 1.8.4をインストールします。
①ダウンロードしたインストーラーを起動します。
②Select Componentsでは「Additional icons」を選択します。
③Adjusting your PATH environmentでは、
「Run Git and included Unix Tools from the Windows Command Prompt」を
選択します。警告として「Windowsツールのfind.exeとsort.exeが上書きされる..」
とありますが、Git専用のコマンドプロンプトを使用しますので無視して構いません。
④Configuring the line encoding Conversionsでは、
「Checkout as-is,commit Unix-Style line encodings」を選択します。
デフォルトのままだと、githubからcheckoutした全てのファイルの改行コードが
Windowsの行末コードLR+LFに変換されてしまい、rubyコマンドの実行時にエラーと
なりますので、注意して下さい。
⑤インストールが開始され、デスクトップおよび、スタートメニューにGit Bash
ショートカットが登録されます。
⑥Git Bashの起動
デスクトップから、Git Bashのショートカットをクリックすると、Git Bash専用の
コマンドプロンプトが表示されますので、sshおよび、gitコマンドが実行できるか
確認します。スクリーンショットでは、ショットのプロパティの作業フォルダを
D:Veeweeに変更しています。
$ ssh -V $ git --version
Ruby for Windowsのインストール
RubyInstaller for Windowsから、Ruby 1.9.3-p448をダウンロードし、任意のフォルダに解凍します。なお、ダウンロードされるアーカイブが7-ZIP形式で圧縮されていますので、ExpLZHなどを使って解凍し、解凍したフォルダ中のbinフォルダにPATHを通します。ここでは、D:Veeweeに解凍を行い、D:VeeweerubybinにPATHを通しています。Git Bashを起動し、rubyおよび、gemコマンドが実行できるか確認します。
$ ruby -v $ gem -v
Devkitのインストール
Devkitは、rubyの拡張機能をインストールする際に必要となりますので、必ずインストールして下さい。
①Devkitの解凍
RubyInstaller for Windowsから、
DevKit-tdm-32-4.5.2-20111229-1559-sfx.exeをダウンロードし、任意のフォルダに
解凍します。ここでは、D:Veeweeに解凍しています。
②Devkitの初期化
①で解凍したフォルダに移動し、以下のコマンドを実行します。
$ ruby dk init
初期化が成功すると、下記のメッセージが表示されます。
初期化が成功しても、Rubyの場所を検出できない場合がありますので、
その場合config.ymlを編集してRubyの場所を指定します。
- d:Veeweeruby
編集内容が正しいか、以下のコマンドを実行して確認します。
$ ruby dk.rb review
指定したRubyの場所が出力されます。
もし、config.ymlの内容に不備があった場合、下記のメッセージが表示されます。
$ ruby dk.rb review
③Devkitのインストール
①で解凍したフォルダに移動し、以下のコマンドを実行します。
$ ruby dk.rb install
config.ymlで指定した場所に、devkit.rbがインストールされます。
④bundlerのインストール
bundlerは、gemコマンドでインストールしようとするソフトウエアの依存関係をチェックして、インストールエラーが発生しないソフトウエアの組み合わせを試行してインストールしてくれるコマンドですので、必ずインストールして下さい。
Git Bashシェルを起動して、以下のコマンドを実行します。
$ gem install bundler --no-rdoc --no-ri
Veeweeのインストール
ここまでで、Veeweeをインストールする際に必要となるソフトウエアが全てインストールされましたので、Git Bashを起動しインストールします。
①Veeweeの最新パッケージを取得する。
$ git clone git://github.com/jedi4ever/veewee.git
②Veeweeをインストールする。
$ cd veewee/ $ bundle install
以上で、Veeweeのインストールが終了します。
仮想マシンイメージの作成
作成可能なBox名の取得
Veeweeでは、予め作成可能なBoxテンプレートの一覧が取得できますので、最初にテンプレート一覧を以下のコマンドを実行して取得します。
$ cd veewee $ bundle exec veewee vbox templates
実行すると、執筆時点で167行のBoxリストが出力されましたので、この中から作成するBoxを選択します。なお、出力されるリストは、そのままBox作成時のコマンドライン引数として利用できます。今回は、CentOS-6.4-i386-minimalをテンプレートとして使用します。
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
実行が成功すると、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
次に、仮想マシンのカスタマイズを行うため、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",
修正が完了したら、veewee vbox buildを実行します。
$ bundle exec veewee vbox build veewee-centos64-minimal
指定したBoxのビルドが開始され、definition.rbで指定したiso_srcからISOファイルをダウンロードするかを聞いて来ますので、Yesを入力します。
ISOイメージのダウンロードが終了すると、VirtualBoxが起動されCentOSのインストールが自動的に実行されます。
しばらくすると、OSのインストールが完了しBoxの再起動後、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
Boxのシャットダウン
インストールが終了しても、Boxは起動したままの状態となっていますので、Boxにログインして、シャットダウンします。
ログインアカウントは、下記の3つのアカウントが作成されています。
UID | PASSWORD |
---|---|
vagrant | vagrant |
veewee | veewee |
root | vagrant |
以上で、Boxの作成が終了します。
Vagrant Boxへの変換
Veeweeで作成したBoxは、VirtualBoxには追加されており、このままではVirtualBoxからは起動できますが、Vagrantから起動することができません。このため、Veeweeで作成したBoxをVagrant用のBoxファイルに変換します。
$ bundle exec veewee vbox export veewee-centos64-minimal
以上で、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に接続します。
$ vagrant ssh
以上で、Veeweeで作成したBoxを起動できます。Box起動後は、shutdownコマンドでBoxを停止します。
⑤起動したBoxを停止します。
$ sudo shutdown -h now
まとめ
ここまで、VeeweeのインストールからVirtualBox用の仮想マシンイメージ(Box)の作成などについて解説しました。Veeweeを使ったBox自動化では、作成されたBoxを手動で停止することが必要になりますが、テンプレートを利用してさまざまなBoxを作成できます。また、テンプレート作成時に生成される設定ファイルをPackerで利用することも可能ですので、組み合わせて利用することで、より柔軟に自動化を行うことができます。
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments