Chefのはじめの一歩

@_zoo/Misa Kondo/近藤美沙
Chefとはなんぞや
・料理ツールではありません

・cookbookとかknifeとか出てき
ますが、リアルな料理とは全く
関係ありません
Chefとはなんぞや
一言でいうとサーバの構成管
理ツール。

構成設定ファイル(以下、
cookbooks)に従ってサーバ内
の構成を管理してくれる。
Puppetとどう違う?
・Puppetは外部DSL
・Chefは内部DSL

端的にいうと、
Chefのcookbookは、rubyでか
ける!
実際に使ってみよう
自分用の開発VMを作る。
最低限、下記は欲しい。
・git
・emacs
Chefの構成図
Chefの構成
Chefサーバ
:cookbookを管理するサーバ
:cookbookに従ってNodeサーバを
管理する
Nodeサーバ
:Chefサーバに管理されるサーバ
Chefの構成
WorkStation
:cookbookを作成し、Chefサーバ
にupする場所
Chefをインストール
$ gem install chef
Knifeの準備
$ knife configure
#=> ~/.chef/knife.rb

knife.rbに下記を追記
cookbook_path='your/cookbook'
knife.rb
coocbookを作る前に
cookbookは構成設定ファイル
のセット

サーバにつき1つ→NG
パッケージにつき1つ→
coocbookの作成(apt)
今回gitとemacsはaptから入れ
るので、事前にupdateしたい。
aptのcookbookを作成。

$ knife cookbook create apt
default.rb
coocbookの作成(git)
$ knife cookbook create git
default.rb
coocbookの作成(emacs)
$ knife cookbook create emacs
default.rb
coobooksの作成完了
今回は自分の開発用なので、
chef-soloという1台構成。

複数台で使う場合はchefサーバ、
Node、Workstationという構成にな
る。
VMの共有ディレクトリに
coocbooksを移動
$ cd ~/vagrant_ubuntu-
1110_sample/data
$ cp -r your/cookbooks ./
VMにログイン
サンプルのため、既にchefはインス
トールしている状態。

$ vagrant ssh
cookbookを確認
$ ls /vagrant_data/
$ ls /vagrant_data/cookbooks
cookbookへのパス設定
$ mkdir ~/.chef
$ cd .chef
$ emacs solo.rb
solo.rb
読み込むレシピの指定
$ emacs chef.json
chef.json
chef-solo実行!
$ sudo chef-solo -c ./solo.rb -j ./chef.json
作業終了

Chefのはじめの一歩