Text
Page: 1
Chefを使うなら知っておい
た方が便利なn個の
Cookbook
西田雄也
松江Ruby会議05
Powered by Rabbit 2.1.2
Page: 3
仕事はRuby
と
JavaScript
Page: 13
他人のふんど^h^h^h
Cookbook
(程度の差はあるけど)よく作り込まれて
いるものが多い.
Node Objectに書くだけでインストール・
設定できる.
追加Resourceが使えるようになる.
クロスプラットホームで同じように書け
る.Debian系とRedHat系とか
12/33
Page: 18
database
各種RDBMSのためのCookbook
データベースの作成 (database
Resource)
database "redmine_production" do
provider Chef::Provider::Database::Postgresql
connection {...} # 接続先ホストとか...省略
owner "redmine"
encoding "UTF8"
action :create
end
17/33
Page: 19
database
各種RDBMSのためのCookbook
データベースユーザの作成
(database_user Resource)
database_user "redmine" do
provider Chef::Provider::Database::PostgresqlUser
connection {...} # 接続先ホストとか...省略
password node["redmine_database_password"]
privileges [:select, :update, :insert]
action :create
end
18/33
Page: 21
rbenv
やれること
rbenvそのもののインストールやruby-buildによ
るrubyのインストール
rbenvで管理しているRubyにgemをインストー
ル
ユーザごとにrbenvインストール
Chef社が出しているもの じゃない ものが
特に便利
# Berksfile
20/33
cookbook "rbenv", github: "fnichol/chef-rbenv"
Page: 22
rbenv
使うRubyのバージョン指定ができるscript
Resourceがある.
rbenv_script "migrate_rails_database" do
rbenv_version "2.1.1"
user
"redmine"
group
"redmine"
cwd
"/opt/redmine/current"
code
%{rake RAILS_ENV=production db:migrate}
end
21/33
Page: 23
build-
essential
Page: 24
build-essential
Cのコンパイル環境が必要な場合はこの
Cookbook
rubyをビルドするとき
拡張ライブラリが入ったgemをインストールする
とき
その他もろもろ
23/33
Page: 25
build-essential
Cのコンパイル環境が必要なCookbookで依
存していることが多いCookbook.
gccやmakeが 早い 段階で必要な場合は次
のような指定を行う.
# nodes/HOST.json
...
"build_essential": {
"compiletime": true
},
...
24/33
Page: 27
gem_binary
他人のCookbookでgemがインストールさ
れるときに使うgemコマンドのパスを指定
するのに使ったりする.
通常(使わないとき)はChefが動作すると
きのRubyが使うgemにインストールされ
る.
debパッケージでChefを入れた場合はdebパッケ
ージに同梱されているgemにインストールされ
る.
自分のCookbookであればrbenv
Cookbookのrbenv_gem Resourceを使え
26/33
Page: 28
gem_binary
# Berksfile
cookbook "gem_binary",
github: "royratcliffe/gem_binary-cookbook"
# nodes/HOST.json
...
"gem_binary": "/usr/bin/gem1.9.1",
...
27/33
Page: 30
ロカール関連
ロカール関連Cookbook
locale-gen ロカールの生成
locales 設定変更
ロカールがen-USになっているときに
ja_JP.UTF-8にするために使用する.
例えばどこかから拾ってきたVagrantのBoxがen-
USになっているときとか.
29/33
Page: 31
ロカール関連
# nodes/HOST.json
...
"localegen": {
"lang": [
"ja_JP.UTF-8 UTF-8"
]
},
"locales": {
"default": "ja_JP.UTF-8",
"available": [
"ja_JP.UTF-8 UTF-8"
]
},
...
30/33
Page: 33
まとめ
他人のふんど^h^h^hCookbook怖くな
い.
Serverspecでサーバの振舞いを記述すればよ
い.
自前で書いても数ヶ月・数年先には忘れる.
README.mdに使い方書いてあるし,なか
ったらrecipe/default.rbとかを読めばおk
自分の管理ポリシーに合わせられなかった
ら合うように修正してより汎用的にできた
らpull-requestしましょう.
32/33
Page: 34
ご静聴あり
がとうござ
いました