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