Vagrant & VeeWee を再設定してCentOS 6.2のBoxを作成してみた
以前Mac(Lion)に試しに入れたVagrantでセットアップしたVirtualBoxのイメージが/private/var/root/VirtualBox VMs以下に作られてしまうのが嫌だったので、Vagrantを入れ直した。ついでにVeeWeeも入れ直して、最新のCentOS 6.2のVagrant Boxを作ってみる。
Ruby、RubyGemsの詳細を押さえていないので不明だけど、Macだと最初からRubyがシステムのところに入っているのが問題? そこでRVMでRuby、RubyGemsを$HOME以下に全てインストールすることにした。
RVMのインストール
以下のコマンドを実行するだけ。簡単すぎる!
bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
rvmコマンドが使えるように.bash_profileを読み直す。
source ~/.bash_profile
Ruby 1.9.3-p0のインストール
RVMコマンドでバージョン番号を指定すれば簡単にインストールできる。すごい便利。とりあえず最新安定板の1.9.3をインストールした。rubyのコンパイルも行われるのでしばらく時間がかかります。
rvm install 1.9.3
インストールした1.9.3を使うようにセットアップ。
rvm use 1.9.3
さらに、再ログインしても維持するためにシステムのデフォルトを1.9.3にする。
rvm --default 1.9.3
Vagrantのインストール
gemコマンドでインストールするだけ。
gem install vagrant
VeeWeeのインストール
こちらもソースからインストールした。gemでもインストールできるが、用意されているテンプレートが少なかったので。
git clone https://github.com/jedi4ever/veewee.git cd veewee bundle install
最後にエイリアスを設定する。
alias vagrant="bundle exec vagrant"
オリジナルのVagrantBoxの作成
Vagrantで使えるベースBoxは http://www.vagrantbox.es/ で公開されているけど、欲しい物が無いときは自分で作るしかない。VeeWeeを使うとベースBoxを簡単に作ることができる。先ほど入れたVeeWeeで早速作ってみる。
今回はCentOS 6.2のBoxを作ってみる。テンプレートに「CentOS-6.2-x86_64-minimal」があるのでこれをベースに作成してみる。Box名は「centos_62_x86_64_ja」とした。なお、コマンドはVeeWeeのルートディレクトリで実行すること。
vagrant basebox define centos_62_x86_64_ja CentOS-6.2-x86_64-minimal
definitions/centos_62_x86_64_ja/以下に3ファイルができている。これらのファイルを編集すれば、作成するVMの設定(CPU、メモリ、HDDサイズなど)とかインストールされるソフトウェアをカスタマイズできる。
- definition.rb
- ks.cfg
- postinstall.sh
今回はks.cfgをちょっと修正してみた。
iinstall cdrom lang ja_JP.UTF-8 keyboard jp106 network --bootproto=dhcp rootpw --iscrypted $1$damlkd,f$UC/u5pUts5QiU3ow.CSso/ firewall --enabled --service=ssh authconfig --enableshadow --passalgo=sha512 selinux --disabled timezone Asia/Tokyo ...
後、definition.rbで定義されているCentOSのISOイメージ取得先も変更。デフォルトだとダウンロードが遅かったので日本のミラーサイトに変更。
ではこれでBoxをビルドしてみる。以下ののコマンドを実行する。
vagrant basebox build centos_62_x86_64_ja
CentOSのISOイメージをダウンロードするか求められるので、「Yes」とするとダウンロードが開始される。ここでしばらく待ち。もし、既に手元にISOイメージがある場合は、VeeWeeのディレクトリ以下にisoディレクトリを作り、そこに配置しておけば良い。
ダウンロードが終わると、後は勝手にVirtualBoxの起動、OSインストールが行われる。全自動でセットアップされる様子を見ているとスゲー!! とちょっと感動しちゃう。
OSが出来上がったら、あとはVagrant用のBoxとしてエクスポートする。以下のコマンドを実行する。VeeWeeのディレクトリ以下にcentos_62_x86_64_ja.boxが出来上がる。
vagrant basebox export centos_62_x86_64_ja
エクスポートしたBoxをVagrantに登録する。これで$HOME/.vagrant.d/boxes 以下に登録される。
vagrant box add 'centos_62_x86_64_ja' 'centos_62_x86_64_ja.box'
作成したVagrat Boxで環境構築してみる
適当にVagrant用のディレクトリを作成。
mkdir ~/centos_62_x86_64_ja cd centos_62_x86_64_ja
VeeWee用にaliasを設定してしまっているので解除する。
unalias vagrant
登録した「centos_62_x86_64_ja」で初期化し、インスタンスを起動する。これで環境構築は完了。
vagrant init 'centos_62_x86_64_ja' vagrant up
最後に
せっかくなので作成したCentOS 6.2(日本語設定版)のBoxをDropBoxで公開しておきます。
http://dl.dropbox.com/u/7023440/vagrant-boxs/centos_62_x86_64_ja.box
Vagrantがインストールされている環境であれば、以下のコマンドですぐに環境構築できます!!
vagrant box add centos_62_x86_64_ja http://dl.dropbox.com/u/7023440/vagrant-boxs/centos_62_x86_64_ja.box