Rabbit Slide Show

Chefを使うなら知っておいた方が便利なn個のCookbook

2014-03-15

Description

使っていて便利だったCookbookの紹介です.

Text

Page: 1

Chefを使うなら知っておい
た方が便利なn個の
Cookbook
西田雄也
松江Ruby会議05
Powered by Rabbit 2.1.2

Page: 2

自己
紹介

Page: 3

仕事はRuby
と
JavaScript

Page: 4

趣味

Page: 5

Chef
とか

Page: 6

Vagrant
とか

Page: 7

その辺で
遊んでい
ます

Page: 8

Chef使っ
ている人

Page: 9

サーバ構
成変更ツ
ール

Page: 10

他人の
Cookbook

Page: 11

Page: 12

楽で
きる

Page: 13

他人のふんど^h^h^h
Cookbook
(程度の差はあるけど)よく作り込まれて
いるものが多い.
Node Objectに書くだけでインストール・
設定できる.
追加Resourceが使えるようになる.
クロスプラットホームで同じように書け
る.Debian系とRedHat系とか
12/33

Page: 14

いく
つか

Page: 15

便利な
Cookbook
の

Page: 16

紹介

Page: 17

database

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: 20

rbenv

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: 26

gem_binary

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: 29

ロカー
ル関連

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: 32

まと
め

Page: 33

まとめ
他人のふんど^h^h^hCookbook怖くな
い.
Serverspecでサーバの振舞いを記述すればよ
い.
自前で書いても数ヶ月・数年先には忘れる.
README.mdに使い方書いてあるし,なか
ったらrecipe/default.rbとかを読めばおk
自分の管理ポリシーに合わせられなかった
ら合うように修正してより汎用的にできた
らpull-requestしましょう.
32/33

Page: 34

ご静聴あり
がとうござ
いました

Other slides