とりとめも

藻類が学んだり感じたりしたことを未来の自分のために書き留めるところ

Chef-Zero勉強記録 その2 Berkshelfでサードパーティ製Cookbookを使う

はじめに

Chefの勉強記録です。その2です。第3回です(ややこしい)

前回はChefをインストールしたり、knife-zeroを使ってリモートホストを操作したり、簡単なレシピを作ってNginxをインストールできるようになったりしました。

(前回の記事はこちら)

今回はレシピの自作からは一旦離れて、Berkshelfなる仕組みについて学んでみます。

Berkshelfって何

大雑把に言うと、GemにとってのBundlerが、CookbookにとってのBerkshelfです。

たとえば、Berksfileというファイルに以下のように書きます。

source "https://supermarket.getchef.com"
cookbook 'nginx'

これでNginx用のCookbookを取ってくることが出来ます。さらにその際には依存関係も自動的に解決してくれるとのこと。
Berksfileが、BundlerにおけるGemfileですね。

以下では実際にBerkshelfを導入して、いろいろとCookbookをインストールしてみます。

Berkshelfのインストール・・・は不要

前回インストールしたChefDKにはBerkshelfも含まれているため、改めてのインストールは不要です。
ためしにバージョン確認してみましょう。

$ berks -v
5.6.4

Berksfileを作る

前回作ったchef-repoディレクトリに、Berksfileを作ります。

$ vi Berksfile

中身を次のように編集してみます。

source "https://supermarket.getchef.com"
cookbook 'yum-epel'
cookbook 'git'

これでepelリポジトリとgitを追加するCookbookをインストールする準備ができました。
なお、Berkshelfで入手できるサードパーティ製のCookbookはこのサイトで検索できます。

Cookbookを取ってくる

先ほど作ったBerkshelfに基づいて、Cookbookをインストールします。
chef-repoディレクトリで以下を実行。

$ berks vendor cookbooks
(いろいろインストールされたっぽいメッセージ)
$ ls cookbooks
README.md        compat_resource  example  mingw  ohai       windows
build-essential  dmg              git      nginx  seven_zip  yum-epel

できたっぽい。
berks vendorではBerksfileに基づきCookbookをインストールします。インストール先は引数で指定したディレクトリですが、何も指定しなかった場合、デフォルトではberks-cookbooksがインストール先となるようです。

取ってきたRecipeの登録

前回と同様にrun_listに登録していきます。

$ knife node run_list add production_host 'recipe[yum-epel]'
production_host:
  run_list:
    recipe[nginx]
    recipe[yum-epel]

$ knife node run_list add production_host 'recipe[git]'
production_host:
  run_list:
    recipe[nginx]
    recipe[yum-epel]
    recipe[git]

収束!

これも前回と同様。knife zero convergeするのです。

$ knife zero converge "name:production_host" -x vagrant
(なんかいろいろメッセージ)

確認

②本番環境で結果を確認します。

$ git --version
git version 1.8.3.1

$ yum repolist | grep epel
 * epel: ftp.riken.jp
epel/x86_64                   Extra Packages for 7 - x86_64               11,847

入ってるっぽい!

おわりに

非常にざっくりですが、Berkshelfを使ってサードパーティ製のCookbookをインストールしてみました。
今回はインストールしたCookbookをすぐにknife zero convergeしました。諸々の設定まで自動化するには、もちろんもっと手を加える必要があります。

というわけで、次回以降はレシピファイルの書き方に焦点を当てて勉強していきたいと思います。