しゃかまる

2014.06.30

Vagrantイメージを自作した話 veewee編

こんにちは、村上です。
前回の記事の続きです。

veewee

Packerを使って仮想マシンを作ることを一旦断念してぐぐっていたところ、veeweeというツールを見つけました。
ruby製のツールで、Vagrantイメージを簡単に作れるようです。
Packerにも veewee-to-packerというtemplateがあり、これを使えばPackerでも簡単にできたかもしれませんね。

対応状況

veeweeは

  • VirtualBox
  • VMware
  • KVM
  • Parallels

に対応しているようです。

インストール

インストールは
https://github.com/jedi4ever/veewee#getting-started
を参考にやりましょう。
依存パッケージが入ってれば、基本的には

で、できます。

インストールが終わると、veeweeコマンドが使えるようになります。
コマンドのhelpを見てみるとこのような感じです。

veewee help

Commands:
veewee fusion # Subcommand for Vmware fusion
veewee help [COMMAND] # Describe available commands or one specific command
veewee kvm # Subcommand for KVM
veewee parallels # Subcommand for Parallels
veewee vbox # Subcommand for VirtualBox
veewee version # Prints the Veewee version information

今回使うのはvboxですが、helpを見るとこんな感じでした。オプションが多かったので必要なところのみ抜粋しています

veewee vbox help

Commands:
veewee vbox build [BOX_NAME] # Build box
veewee vbox destroy [BOX_NAME] # Destroys the virtualmachine that was built
veewee vbox export [BOX_NAME] # Exports the basebox to the vagrant format
veewee vbox ssh [BOX_NAME] [COMMAND] # SSH to box
veewee vbox templates # List the currently available templates

仮想マシン作成

veewee vbox templates を使用すると、テンプレートが用意されてあるOSの一覧が表示されます。

veewee vbox define ” ‘CentOS-6.4-x86_64-netboot’ –workdir=/path/to/workdir

このコマンドをを使用したい名前に書き換えて実行すると仮想マシンのworkspaceが作られます。
同時に、box_nameの下層にディレクトリが作られて、各種スクリプトが配置されます。

find .

./definitions
./definitions/”
./definitions/”/base.sh
./definitions/”/cfengine.sh
./definitions/”/chef.sh
./definitions/”/cleanup.sh
./definitions/”/definition.rb
./definitions/”/ks.cfg
./definitions/”/puppet.sh
./definitions/”/ruby.sh
./definitions/”/vagrant.sh
./definitions/”/virtualbox.sh
./definitions/”/vmfusion.sh
./definitions/”/zerodisk.sh

veewee vbox build ‘box_name’ –workdir=path/to/veewee
を実行すると、ks.cfgの内容に沿ってOSのインストールが開始されます。
が、OSやバージョンによってはks.cfgに記載されたURLがすでに無くなっていたりして止まってしまいます。
CentOS64のnetinstallでは、ks.cfgに

が指定されていますが、このURLはすでに404になってしまっています。
幸い、僕は何度もOSのネットインストールをやったことがあったので別のリポジトリを指定してインストールすることができました。
実際にはここのものを使わせてもらってます。
http://ftp.riken.jp/Linux/centos/6.4/os/x86_64/images/

OSがインストールされるとその他のbaseだったりchefだったりのスクリプトが実行されて各種ツールが自動的にインストールされます。
何をされているか分からなくて気持ち悪いという人は、スクリプトやレシピの内容を見て、必要に応じて編集しましょう。
rubyやchefのインストール, vagarnt用のユーザを作ったりしています。

こうしてveeweeのイメージを作ったら、vagrantのパッケージを作ることができます。

大した時間もかからず、これで自分用のvagrant boxを作ることができました。
作成されたイメージファイルを参照可能なところに置いて、vagrantのコマンドで参照すると使うことができます。

http://www.vagrantbox.es/ でvagrantのイメージは落とせますが
すでにどういう環境が入っているかを調べないといけないのでせっかくなら自分で作ってみようと思ってやってみましたが、思ったより簡単に作れるものですね。

それではまた。