LoginSignup
221

More than 5 years have passed since last update.

Berkshelfを試してみる

Posted at

社内でBerkshelfがウワサになっていたので試してみた。

Berkshelfとは?

Berkshelfとは、「Chefのcookbookとその依存関係を管理するツール」らしい。

要するに、定義ファイルに使うcookbookを定義しておけば、リポジトリから勝手に依存関係を解消した上で
落としてきてくれるらしい。RubyのBundlerみたいな感じ。
同じようなので、Librarian-Chefというのもあるが、Berkshelfの方が現時点で主流っぽい。

Berkshelfの使い方

Berkshelfはgemで配布されているので、gem installでインストールできる。

$ gem install berkshelf

使用したいcookbookを定義するBerksfileを作成する。
Berkshelfの公式サイトにも書いてあるが、opscodeからmysqlとnginxのcookbookを使う場合はこんな感じ。
cookbookのmetadata.rbに定義された依存パッケージもあわせて落としてくれる。

$ cat Berksfile
site :opscode

cookbook 'mysql'
cookbook 'nginx', '~> 0.101.5'

こんな感じでgithubから持ってくる事も出来る。

cookbook "zabbix2.0", git: "https://github.com/uchiunyo/chef-zabbix2.0.git"

cookbookはberksコマンドで落としてくる。Berksfileにzabbixのcookbookを定義して実行した。

$ berks --path=vendor/cookbooks
Installing zabbix2.0 (0.1.0) from git: 'https://github.com/uchiunyo/chef-zabbix2.0.git' with branch: 'master' at ref: 'c201bba54ef606b040dcdb057397faafca870913'
Using yum (2.2.2)

ちゃんと依存パッケージであるyumもopscodeから落としてきてくれていた。

$ ls vendor/cookbooks
yum  zabbix2.0

後はいつもどおり.jsonにcookbookを定義してchefを実行すればOK!!

Berkshelf + knife-soloを使ったchef-repoを考えてみる

じゃあBerkshelfを使ってどんな感じにchef-repo構成すればやりやすいかなーと考えてみた。
ちなみにchefの実行はknife-soloを使っているので、その辺りも考慮したい。

とりあえずこんな感じかな?というのをgithubに置いてみた。

使い方はこんな感じを想定している。

まずは事前準備。構築する環境はvagrantのCentOS6.4(vmcent1)にZabbix2.0 Serverを構築する。
githubからchef-repo持ってきて、bundle installでchef-soloとかknife-solo,Berkshelfを用意する。

$ git clone https://github.com/uchiunyo/chef-repo.git
$ cd chef-repo
$ bundle install --path=vendor/bundle

そしてberksを実行してgithubよりcookbookと、依存cookbookを落としてくる。

$ bundle exec berks --path=vendor/cookbooks

ではvmcent1にZabbix2.0 Serverを構築する。
まずはknife-solo prepareでchefをインストールする。

$ bundle exec knife solo prepare vmcent1

.chefから、構築したい構成の.jsonを選択し、nodesの中にコピーする。
今回はZabbix-ServerのDBにローカルのMySQLを使うので、zabbix_db_local.jsonを使う。

$ cp .chef/zabbix_db_local.json nodes/vmcent1.json

vmcent1でchefを実行する。

$ bundle exec knife solo cook vmcent1

Zabbix Serverの出来上がり!!って感じです。
こんな感じで使いたいcookbookはガシガシBerksfileに書いて、.jsonファイルに雛形を用意して使い分ける事によって
うまいこと管理できないかなーと思ってみた。

助言異論反論コメントなどあれば、頂けると嬉しいです。

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
221