$30 off During Our Annual Pro Sale. View Details »

Useful Chef cookbooks

Useful Chef cookbooks

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

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

Yuya.Nishida.

March 15, 2014
Tweet

More Decks by Yuya.Nishida.

Other Decks in Technology

Transcript

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

    View Slide

  2. 自己
    紹介

    View Slide

  3. 仕事はRuby

    JavaScript

    View Slide

  4. 趣味

    View Slide

  5. Chef
    とか

    View Slide

  6. Vagrant
    とか

    View Slide

  7. その辺で
    遊んでい
    ます

    View Slide

  8. Chef使っ
    ている人

    View Slide

  9. サーバ構
    成変更ツ
    ール

    View Slide

  10. 他人の
    Cookbook

    View Slide


  11. View Slide

  12. 楽で
    きる

    View Slide

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

    View Slide

  14. いく
    つか

    View Slide

  15. 便利な
    Cookbook

    View Slide

  16. 紹介

    View Slide

  17. database

    View Slide

  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

    View Slide

  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

    View Slide

  20. rbenv

    View Slide

  21. rbenv
    やれること
    rbenvそのもののインストールやruby-buildによ
    るrubyのインストール
    rbenv管理下のRubyにgemをインストール
    ユーザごとにrbenvインストール
    Chef社が出しているもの じゃない ものが
    特に便利
    # Berksfile
    cookbook "rbenv", github: "fnichol/chef-rbenv"
    20/33

    View Slide

  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

    View Slide

  23. build-
    essential

    View Slide

  24. build-essential
    Cのコンパイル環境が必要な場合はこの
    Cookbook
    rubyをビルドするとき
    拡張ライブラリが入ったgemをインストールする
    とき
    その他もろもろ
    23/33

    View Slide

  25. build-essential
    Cのコンパイル環境が必要なCookbookで依
    存していることが多いCookbook.
    gccやmakeが 早い 段階で必要な場合は次
    のような指定を行う.
    # nodes/HOST.json
    ...
    "build_essential": {
    "compiletime": true
    },
    ...
    24/33

    View Slide

  26. gem_binary

    View Slide

  27. gem_binary
    他人のCookbookでgemがインストールさ
    れるときに使うgemコマンドのパスを指定
    するのに使ったりする.
    通常(使わないとき)はChefが動作時の
    Rubyが使うgemにインストールされる.
    debパッケージでChefを入れた場合はパッケージ
    に同梱されているgemにインストールされる.
    自分のCookbookであればrbenv
    Cookbookのrbenv_gem Resourceを使え
    ばいいでしょう.
    26/33

    View Slide

  28. gem_binary
    # Berksfile
    cookbook "gem_binary",
    github: "royratcliffe/gem_binary-cookbook"
    # nodes/HOST.json
    ...
    "gem_binary": "/usr/bin/gem1.9.1",
    ...
    27/33

    View Slide

  29. ロカー
    ル関連

    View Slide

  30. ロカール関連
    ロカール関連Cookbook
    locale-gen ロカールの生成
    locales 設定変更
    ロカールがen-USになっているときに
    ja_JP.UTF-8にするために使用する.
    例えばどこかから拾ってきたVagrantのBoxがen-
    USになっているときとか.
    29/33

    View Slide

  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

    View Slide

  32. まと

    View Slide

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

    View Slide

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

    View Slide