• chef-soloのレシピのカスタマイズの記録

    こんにちは。小宮です。
    おかげ様でカスタマイズする機会があったため、その一部を引用してご紹介いたします。

    基本的なことなどは、
    以下のリンクや「入門chef-solo」その落ち穂拾いもご覧になるとよいと思います。
    Chef Soloと Knife Soloでの ニコニコサーバー構築 (2) 〜導入編〜:dwango エンジニア ブロマガ
    chef-solo - Chefを読んで実行するための全知識 - Qiita
    DevOpsを実現するChef活用テクニック // Speaker Deck
    あとGW前後にchef実践入門的な書籍をエンジンヤード(chefが出る前から8年くらい使ってる会社)の御方が出されるそうで大変期待してるところです。

    chefのnode、role、enviroment、attribute、data_bagsの解説になります。
    この記事は基本の説明とカスタマイズの為の簡単な情報提供になるかと思います。
    以下に記載しているレシピを実際ためした環境はCentOS6.4のみで、申し訳ありませんが異なる環境での動作保障はできないです。
    異なるOS間の動作保障するような汎用的(複雑)なレシピはopscodeコミュニティの☆がいっぱいついてるクックブックを使えばいいらしいです。
    (余計なものを極力入れないとか既存の環境または手順をレシピ化するという需要には不向きかとは思います。)

    chefリポジトリ直下のディレクトリの解説を以下に記します。
      cookbooks :サードパーティのクックブック置き場
     data_bags :data_bagsのデータ置き場
     environments :環境設定ファイル置き場
     nodes :ノード(ホスト・各サーバ)設定ファイル置き場
     roles :役割設定ファイル置き場
     site-cookbooks :自作クックブック置き場(クックブックはレシピ、配布ファイル等を含む)

    各用語を以下に軽く解説します。
    ・ohai
    chefに同梱されているレシピを適用するホストの情報を取得するコマンドです。
    ohaiで取得した値に基づいてattributeを定義することが可能です。
    たとえばOS搭載メモリやCPUコア数に応じて設定値を変えたい場合やホスト名や
    IPアドレスなど固有の情報を設定ファイルに載せたい場合などに利用すると便利です。

    ・node
    nodesディレクトリ直下にhostname.jsonまたはipaddress.jsonというファイルを置き、
    そこにそのサーバ固有の設定値(attribure)や割り当てる役割(role)を定義します。

    ・role
    dbやwebなど、同じ役割のサーバをroleでまとめ、同じ役割のサーバ群に適用するレシピ
    やパラメータをまとめて定義します。

    ...