作成するBox
CentOS 6.3 64bit
他のバージョンも同じ感じで作成できます。
環境
Windows 7 Professional 64bit SP1
msysgit 1.8.5.2
VirtualBox 4.3.6
Vagrant 1.4.3
Ruby 2.0.0-p353
msysgitをインストール
以下から最新版をダウンロードする
http://code.google.com/p/msysgit/downloads/list
ダウンロードしたときは「Git-1.8.5.2-preview20131230.exe」が最新でした。
インストールを進めると以下のダイアログが表示されますので、
「Run Git and included Unix tools from the Windows Command Prompt」を選択してインストールします。
VirtualBoxをインストール
以下から最新版をダウンロードする
https://www.virtualbox.org/wiki/Downloads
ダウンロードしたときは、「VirtualBox-4.3.6-91406-Win.exe」が最新でした。
特に気にせずインストールを進める。
Vagrant のインストール
以下から最新版をダウンロードする
http://www.vagrantup.com/downloads.html
ダウンロードしたときは、「Vagrant_1.4.3.msi」が最新でした。
Vagrantインストール後、再起動を要求されるので再起動します。
Ruby、DevKit のインストール
以下から最新版をダウンロードする
http://rubyinstaller.org/downloads/
ダウンロードしたときは、
Ruby:「rubyinstaller-2.0.0-p353.exe」
DevKit:「DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe」
が最新でした。
因みに32bit版をダウンロードしました。
64bit版でも問題なかったですが、別件で、使おうとしたnokogiriが64bit版に対応してなかったから;;
DevKit
DevKitは、任意の場所に展開します。今回は、「C:\DevKit」に展開します。
コマンドプロンプトを開き以下のコマンドを実行し、DevKitをインストールします。
> cd C:\DevKit > ruby dk.rb init > ruby dk.rb install
Veewee
前準備
改行コードの問題を減らすための対応。
チェックアウトするときに行末の LF を CRLF に自動変換されないように無効にします。
> git config --global core.autocrlf false
作業フォルダは適当に。
CentOSのISOをダウンロードするので、Cドライブ以外が良いかと思います。
Veeweeをclone
> git clone git://github.com/jedi4ever/veewee.git
フォルダ移動とbundle install
> cd veewee > bundle install
これで、Veeweeを使える環境が整いました。
Box の作成
テンプレートの表示
> bundle exec veewee vbox templates
Box 作成
今回は、CentOS 6.3 64bit版のBoxを作ります。
> bundle exec veewee vbox define 'CentOS-6.3-x86_64' 'CentOS-6.3-x86_64-minimal'
上記を実行すると、Veeweeフォルダ配下に definitions/CentOS-6.3-x86_64 が作成されます。
設定をカスタマイズ
ks.cfg
言語とキーボードの設定やSELinuxの設定などなど
自分は以下に変更しています。
lang ja_JP.UTF-8 keyboard jp106 timezone --utc Asia/Tokyo
SELinuxが有効になっている場合は、無効にしておく。(CentOS 5.9のboxを作った時に行った設定)
selinux --enforcing
上記を以下のように。
selinux --disabled
ファイル開いて書き換えるのが面倒なので、sedコマンドで置換したりしてます。
> cd definitions\CentOS-6.3-x86_64 > cp -ip ks.cfg ks.cfg.bak > sed -i -e "s/lang en_US\.UTF-8/lang ja_JP\.UTF-8/g" ks.cfg > sed -i -e "s/keyboard us/keyboard jp106/g" ks.cfg > sed -i -e "s/timezone UTC/timezone --utc Asia\/Tokyo/g" ks.cfg
definition.rb
このファイルで仮想マシンのディスクサイズやメモリ、OSのイメージファイルのダウンロード先、
インストール作業自体のタイムアウトや標準のインストールが終わったあとの追加のインストール作業の設定が可能です。
ISOファイルをダウンロードするミラーサーバーを以下に変更
http://ftp.riken.jp/Linux/centos/
デフォルトだと、ISOファイルが削除されているので変更は必須かと。
あと上記のミラーサーバーだと古いバージョンのCentOSのISOも残してるので重宝してますw
不要なインストールはここで、コメントアウトする。
:postinstall_files => [ "base.sh", "chef.sh", "puppet.sh", "vagrant.sh", "virtualbox.sh", #"vmfusion.sh", "cleanup.sh", "zerodisk.sh" ],
puppetクライアントのインストールが必要がない場合は、
#"puppet.sh",
のようにします。
これもsedコマンドで置換したりしてます。
> cp -ip definition.rb definition.rb.bak > sed -i -e "s/www\.mirrorservice\.org\/sites\/mirror\.centos\.org/ftp\.riken\.jp\/Linux\/centos/g" definition.rb > sed -i -e "s/\"puppet\.sh\",/#\"puppet\.sh\",/g" definition.rb
ruby.sh
デフォルトで記載されているものを削除、以下に修正する。
cd /tmp wget http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz || fail "Could not download Ruby source" tar xzvf ruby-2.0.0-p353.tar.gz cd ruby-2.0.0-p353 ./configure make && make install cd /tmp rm -rf /tmp/ruby-2.0.0-p353 rm /tmp/ruby-2.0.0-p353.tar.gz ln -s /usr/local/bin/ruby /usr/bin/ruby # Create a sym link for the same path ln -s /usr/local/bin/gem /usr/bin/gem # Create a sym link for the same path
デフォルトのままでは、ruby 1.8.7 がインストールされます。
chef.shでインストールされる chef が ruby 1.8.7 で使えなくなって失敗したため、Ruby 2.0.0 をインストールしました。
sedコマンドで置換した時にフォルダ移動したので前のフォルダに戻る。
cd ../../
boxをビルド
> bundle exec veewee vbox build 'CentOS-6.3-x86_64'
途中ISOファイルをダウンロードするか聞かれるので、 yes を入力し Enter を押します。
Download? (Yes/No) yes[Enter]
ISOファイルがダウンロードされ、自動的に VirtualBox のウインドウが起動し、OSのインストールが進んでいきます。
仮想マシンで64bitのOSが動作できない場合、途中で失敗します。しかしコマンドプロンプトではエラーが表示されず、中々返ってこないので、
VirtualBox のウインドウを確認してるとすぐ気づきます。
あまりないけど、1回あったので記載しておきます。
このビルドは結構時間が掛かります。
ISOファイルは、Veeweeフォルダ直下のisoフォルダにダウンロードされています。
boxをエクスポート
> bundle exec veewee vbox export 'CentOS-6.3-x86_64'
上記のコマンドで、起動しているCentOSに、シャットダウンコマンドが送られるので、
VirtualBox のウインドウでCentOSにログインし、シャットダウンする必要はありません。
エクスポートが完了すると、Veeweeフォルダ直下に以下のboxファイルができます。
CentOS-6.3-x86_64.box