veeweeの使い方

##veeweeとは
忘れないようにメモしておきたいと思います。
veeweeとはオリジナルboxファイルを作るツールになります。

vagrantを使用していると、真っ白なテンプレート状態のboxを使用することになります。
![Base_Template](https://bitbucket.org/harareona/quiita_photo/raw/aa31cb171b0e93ed8786a7043b4b7caf7779cf02/sile3.jpg)
<p></p>
しかし、テスト環境にインストールしておきたいツールなどがあると思います。
例えば、nmap、htop、またepelなどのリポジトリなどです。
いちいちテスト環境を作るたびに、インストールするのは面倒
このような時にveeweeを使うとOriginalBoxが作られて、テスト環境を作るのが楽になります。
![Original_Template](https://bitbucket.org/harareona/quiita_photo/raw/aa31cb171b0e93ed8786a7043b4b7caf7779cf02/sile2.jpg)
あくまで作るboxは、基礎の基となります。
どのようなテスト環境でも必要になるツールなどをインストールするのが良いと思います。
あとはChefなどのツールを使って、煮るなり焼くなりしてテスト環境を作れば良いと思います。
![Chef_Template](https://bitbucket.org/harareona/quiita_photo/raw/aa31cb171b0e93ed8786a7043b4b7caf7779cf02/sile4.jpg)
<br>
##veeweeのインストール方法
環境はCentOS6.4です。
`gem`を使ってインストールします。
`gem`は`ruby`を使うのでインストールお願いします。

```ruby:gem-install-veewee
gem install veewee --no-ri --no-rdoc
```
<<追記>>
--no-ri --no-rdoc オプションを追加しました。
ドキュメントのインストールを省き、インストールを速めてくれます。

<br>

#veeweeの使い方
##1.veeweeコマンド
今回はVirtualboxのboxを作ります。
vbox=virtualboxです、ほかにkvmなどがあります。

| veeweeコマンド | 説明 |
|:-------------:|:---:|
|veewee vbox define [boxname] [template] |  テンプレートを使って真っ白なboxを作ります |
|veewee vbox templates | 使えるテンプレートを一覧で表示します|
|veewee vbox build [boxname] | オリジナルboxをビルドします |
|veewee vbox ssh [boxname] [command]| boxにログインします|
|veewee vbox halt [boxname]|boxをシャットダウンします|
|veewee vobx up [boxname]| boxを起動します |

<br>
##2.veeweeのセットアップ
###2-1 テンプレートBoxを用意
`veewee vbox templates`コマンドで使えるテンプレートを表示します

```ruby:veewee-template
‥
veewee vbox define '<box_name>' 'CentOS-6.2-x86_64-netboot'
veewee vbox define '<box_name>' 'CentOS-6.3-i386-minimal'
veewee vbox define '<box_name>' 'CentOS-6.3-x86_64-minimal'
veewee vbox define '<box_name>' 'CentOS-6.3-x86_64-netboot'
‥
```

テンプレートを指定して、boxを作ります

```ruby:veewee-define
veewee vbox define veewee-test 'CentOS-6.3-x86_64-minimal'
```
テンプレートboxを作成すると
`definitions`フォルダができ、その下に`veewee-test`フォルダが作成されます。
`veewee-test`フォルダ以下は下記のファイル構成になります。

```bash:veewee-test
base.sh       chef.sh       cleanup.sh    definition.rb ks.cfg        puppet.sh     ruby.sh       vagrant.sh    virtualbox.sh zerodisk.sh
```

色々なスクリプトファイルが作られるので、開いて確認してみてください。
<br>

###2-2 設定変更
今回は`bash.sh`ファイルを編集します。
インストールするものはnmapです。yumのupdateもします。

```ruby:bash.sh
# Base install

sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers

cat > /etc/yum.repos.d/epel.repo << EOM
[epel]
name=epel
baseurl=http://download.fedoraproject.org/pub/epel/6/\$basearch
enabled=1
gpgcheck=0
EOM

yum update　←　追加

yum -y install gcc make gcc-c++ kernel-devel-`uname -r` zlib-devel openssl-devel readline-devel sqlite-devel perl wget dkms nmap  ←　追加
```

変更できたら保存してください。
<br>
###2-3 Originalboxのビルド

```ruby:hogehoge
veewee vbox build veewee-test
```
上記のコマンドで、isoファイルなどがダウンロードされ、ビルド開始です。
最初はかなり時間がかかると思います。

```text:
The box veewee-test was build successfully!
```
上記のような表示が出ると成功です。
実際にログインしてみます。

```ruby:hogehgoe
veewee vbox ssh veewee-test
```
デフォルトだとパスワードは`veewee`になっています。
nmapはインストールされたでしょうか？
<br>

###2-4 Originalboxのエクスポート
作ったOriginalboxをboxファイルとしてエクスポートしたいと思います。
エクスポートするにはvagrantが必要になるのでインストールお願いします。

```ruby:vagrant-package
vagrant package --base veewee-test --output veewee.vbox
#veewee.vboxはファイル名になります
```
コマンドを実行したカレントディレクトリにboxファイルが作られます。
あとはこのboxファイルを指定して

```ruby:vagrant-originalbox
vagrant box add veewee veewee.box
```
vagrantのテスト環境構築に使います。
veeweeというboxを使うと、最初からnmapがインストールされている状態です

長くなりましたが、以上になります。