軽量・高速版 Chef 「Itamae」。 プロビジョニングツールの学習コスト低下。Berkshelfからの解放。Chef Solo から Chef Zero への移行からの解放 #devops #itamae

# 軽量・高速版 Chef 「Itamae」 プロビジョニングツールの学習コスト低下。Berkshelfからの解放。Chef Solo から Chef Zero への移行からの解放 #devops #itamae

## 概要
プロビジョニングツール Itamae について。
概要説明と、インストール・動作確認までを行います。

## 特徴
### 基本的な特徴
* Ruby 製
* 設定は Ruby の 内部DSL
* 簡単で学習コストを下げた、軽量な Chef といった立ち位置
* 早い
* Vagrant 対応の vagrant-itamae plugin がある
* Chef と似た概念が多いため、 Chef からの移行が容易
    * 全く同じ記述ができる部分が多くある
* クックパッド社 ryotarai 氏作
* クックパッド社の本番環境でも利用されている

### 注目すべき特徴
* 日本発なので日本語で最新情報の収集が期待できる
* レシピは Bundler + gem で管理。 **Chef + Berkshelf の苦労から解放される**
* Chef Solo => Chef Zero の移行を忘れることができる

### どうでもいい心配
* クックパッド社内で「レシピ」の話題を出した時に、 Itamae の話か Chef の話か、本業のビジネスドメインの話か混乱しそう

## インストール

~~~bash
$ gem install itamae --no-ri --no-doc
$ itamae version
Itamae v1.0.1
~~~

## 試行
### レシピ作成(recipe.rb)

Chefと全く同じレシピ！

~~~ruby:recipe.rb
package "tree" do
  action :install
end
~~~

### ローカルプロビジョニングの実行

~~~bash
$ itamae local recipe.rb
 INFO : Starting Itamae...
 INFO : Recipe: /home/vagrant/test/recipe.rb
 INFO :    package[tree]
 INFO :       action: install
 INFO :          installed will change from 'false' to 'true'
~~~

### インストール結果の確認

~~~
# 動作確認用に私の自作 gem , defoker をインストール（要 Ruby 2.0 以上）
$ gem install defoker --no-ri --no-doc
Fetching: defoker-0.0.7.gem (100%)
Successfully installed defoker-0.0.7
1 gem installed
$ defoker v
"0.0.7"

# 20141101 から 90日分のフォルダを作成
$ defoker days 20141101 -c 90 -a itamae
$ ls
20141101_itamae  20141124_itamae  20141217_itamae  20150109_itamae
20141102_itamae  20141125_itamae  20141218_itamae  20150110_itamae
20141103_itamae  20141126_itamae  20141219_itamae  20150111_itamae
20141104_itamae  20141127_itamae  20141220_itamae  20150112_itamae
20141105_itamae  20141128_itamae  20141221_itamae  20150113_itamae
20141106_itamae  20141129_itamae  20141222_itamae  20150114_itamae
20141107_itamae  20141130_itamae  20141223_itamae  20150115_itamae
20141108_itamae  20141201_itamae  20141224_itamae  20150116_itamae
20141109_itamae  20141202_itamae  20141225_itamae  20150117_itamae
20141110_itamae  20141203_itamae  20141226_itamae  20150118_itamae
20141111_itamae  20141204_itamae  20141227_itamae  20150119_itamae
20141112_itamae  20141205_itamae  20141228_itamae  20150120_itamae
20141113_itamae  20141206_itamae  20141229_itamae  20150121_itamae
20141114_itamae  20141207_itamae  20141230_itamae  20150122_itamae
20141115_itamae  20141208_itamae  20141231_itamae  20150123_itamae
20141116_itamae  20141209_itamae  20150101_itamae  20150124_itamae
20141117_itamae  20141210_itamae  20150102_itamae  20150125_itamae
20141118_itamae  20141211_itamae  20150103_itamae  20150126_itamae
20141119_itamae  20141212_itamae  20150104_itamae  20150127_itamae
20141120_itamae  20141213_itamae  20150105_itamae  20150128_itamae
20141121_itamae  20141214_itamae  20150106_itamae  20150129_itamae
20141122_itamae  20141215_itamae  20150107_itamae
20141123_itamae  20141216_itamae  20150108_itamae
# 月単位のフォルダに分割
$ defoker mv_month
$ ls
201411  201412  201501
# 年単位のフォルダに分割
$ defoker mv_year
$ ls
2014  2015

# Itamae でインストールした tree で確認
.
|-- 2014
|   |-- 11
|   |   |-- 01_itamae
|   |   |-- 02_itamae
|   |   |-- 03_itamae
|   |   |-- 04_itamae
|   |   |-- 05_itamae
|   |   |-- 06_itamae
|   |   |-- 07_itamae
|   |   |-- 08_itamae
|   |   |-- 09_itamae
|   |   |-- 10_itamae
|   |   |-- 11_itamae
|   |   |-- 12_itamae
|   |   |-- 13_itamae
|   |   |-- 14_itamae
|   |   |-- 15_itamae
|   |   |-- 16_itamae
|   |   |-- 17_itamae
|   |   |-- 18_itamae
|   |   |-- 19_itamae
|   |   |-- 20_itamae
|   |   |-- 21_itamae
|   |   |-- 22_itamae
|   |   |-- 23_itamae
|   |   |-- 24_itamae
|   |   |-- 25_itamae
|   |   |-- 26_itamae
|   |   |-- 27_itamae
|   |   |-- 28_itamae
|   |   |-- 29_itamae
|   |   `-- 30_itamae
|   `-- 12
|       |-- 01_itamae
|       |-- 02_itamae
|       |-- 03_itamae
|       |-- 04_itamae
|       |-- 05_itamae
|       |-- 06_itamae
|       |-- 07_itamae
|       |-- 08_itamae
|       |-- 09_itamae
|       |-- 10_itamae
|       |-- 11_itamae
|       |-- 12_itamae
|       |-- 13_itamae
|       |-- 14_itamae
|       |-- 15_itamae
|       |-- 16_itamae
|       |-- 17_itamae
|       |-- 18_itamae
|       |-- 19_itamae
|       |-- 20_itamae
|       |-- 21_itamae
|       |-- 22_itamae
|       |-- 23_itamae
|       |-- 24_itamae
|       |-- 25_itamae
|       |-- 26_itamae
|       |-- 27_itamae
|       |-- 28_itamae
|       |-- 29_itamae
|       |-- 30_itamae
|       `-- 31_itamae
`-- 2015
    `-- 01
        |-- 01_itamae
        |-- 02_itamae
        |-- 03_itamae
        |-- 04_itamae
        |-- 05_itamae
        |-- 06_itamae
        |-- 07_itamae
        |-- 08_itamae
        |-- 09_itamae
        |-- 10_itamae
        |-- 11_itamae
        |-- 12_itamae
        |-- 13_itamae
        |-- 14_itamae
        |-- 15_itamae
        |-- 16_itamae
        |-- 17_itamae
        |-- 18_itamae
        |-- 19_itamae
        |-- 20_itamae
        |-- 21_itamae
        |-- 22_itamae
        |-- 23_itamae
        |-- 24_itamae
        |-- 25_itamae
        |-- 26_itamae
        |-- 27_itamae
        |-- 28_itamae
        `-- 29_itamae
~~~

## 参照
* [Itamae GitHub](https://github.com/ryotarai/itamae)
* [Itamae Vagrant GitHub](https://github.com/chiastolite/vagrant-itamae)
* [Itamae!!Infra!as!Code!現状確認会!](http://sssslide.com/speakerdeck.com/ryotarai/itamae-infra-as-code-xian-zhuang-que-ren-hui)