Help us understand the problem. What is going on with this article?

Berkshelfを試してみる

More than 5 years have passed since last update.

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

Berkshelfとは?

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

http://berkshelf.com/

要するに、定義ファイルに使う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に置いてみた。

https://github.com/uchiunyo/chef-repo

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

まずは事前準備。構築する環境は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ファイルに雛形を用意して使い分ける事によって
うまいこと管理できないかなーと思ってみた。

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

uchiunyo
しがない運用系派遣エンジニア。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした