LoginSignup
0
1

More than 5 years have passed since last update.

The Berkshelf Way

Posted at

Berkshelfのissueで結構重要なことが書いている(気がした)ので、簡単にまとめておく(間違ってる箇所あったら編集リクエスト下さい)。元々The Berkshelf Wayはyoutube動画の方のスライドのタイトルだけど、ここに書いてある内容にも合ってる気がしたので、同じタイトル付けてみた。
How to use Berkshelf to manage Organization repo like the Librarian-chef does? #535

Cookbookのあるべき姿

Berkshelfのコアチームはcookbookの以下の様にあるべきだと思っている.

  • 各cookbookは個別のGitリポジトリに格納され、全てのcookbookが個々のBerksfileを持つべき
  • 各cookbookに対してCIサーバ上にビルドジョブを作成し、そのジョブの中でテストを行った上でChef Serverにアップロードすべき
  • 各cookbookを1つのソフトウェアのプロジェクトと考えるべき
  • 全てのcookbookをchef repoに突っ込むという考えは捨てるべき
    • 全てのcookbookを1つのリポジトリに入れるという事は単一責務を破壊する行為
    • commit historyが読みづらくなるし、全てのデベロッパーが全てのcookbookにアクセス出来るという前提を置いた考え方になっている(1つのリポジトリに全てのcookbookがあるということは)

https://github.com/berkshelf/berkshelf/issues/535#issuecomment-18246039
https://github.com/berkshelf/berkshelf/issues/535#issuecomment-18123272
https://github.com/berkshelf/berkshelf/issues/535#issuecomment-98868265

CookbooksのないChef Repo

chef-repoに含めるべきものは以下

  • environments
  • data bags
  • roles (berkshelfのメンバーはroleは使うなと言っているので、もしどうしても使うならくらいのもの)

ここにcookbooksディレクトリは 含まれない

chef-repoをcookbookをchef-serverにアップロードする場所として使う為にBerksfileを置くのはあり。Berksfileに自分のインフラで使用するcookbookを記載して、berks uploadでchef serverにアップロードしたりberks packageでパッケージするのに使える。但し、chef-repoをcookbookを開発する場所として使うべきではない。

https://github.com/berkshelf/berkshelf/issues/535#issuecomment-18300649
https://github.com/berkshelf/berkshelf/issues/535#issuecomment-29508430
https://github.com/berkshelf/berkshelf/issues/535#issuecomment-29533429

その他

chef-repo使わない場合knife.rbはどこに置くの?

~/.chef/knife.rbに置きなされ
https://github.com/berkshelf/berkshelf/issues/535#issuecomment-18415517

chef-serverを複数使う場合はそれじゃ無理なんだけど?

knife-blockを使ってみなよ
https://github.com/berkshelf/berkshelf/issues/535#issuecomment-18462031

cookbook毎にリポジトリを作る構造の利点

  • berkshelfがそれを想定した作りになっているので、berkshelfを使って作業しやすい
  • 多くの人がこの方法をとるので、助けを得やすい
  • cookbookとgit tagを一致させられる(それを助けるツールもある)
  • 全てのcookbookが同じ構造なので汎用的なビルドジョブを作る事が可能

お前らのApplication CookbookとLibrary Cookbookは間違っている

Application Cookbook

Application cookbookはアプリケーションをインストールし設定するcookbookのことを指す。例えばmy-webappというアプリケーションがあるとした時に、そのcookbookがNGINXのcookbookに依存していたとしてもNGINXのcookbookをLibrary Cookbookとは呼ばない。NGINXのcookbookもまたアプリケーションcookbook。

Library Cookbook

LWRPや定義だけのCookbookのことをLibrary Cookbookと言う。通常Library cookbookはレシピを含まない。

リンク

The Berkshelf Way - Youtube
The Berkshelf Way - Slideshare
How to use Berkshelf to manage Organization repo like the Librarian-chef does? #535

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1