techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

Berkshelfを使ってChef SupermarketからCookbookを取得してみる

前回は、Chef soloとKnifeを使って自分でCookbookを作成し、ゲストOSに適用しましたが、今回はChef SuperMarketに上がっているCookbookを取得してゲストOSに適用します。

Chef SupermarketはChefユーザのコミュニティで、Chefユーザ達が作成したCookbookやツール類が登録され日々更新されています。
Berkshelfを使えば、Chef Supermarket(ベンダー)に登録されているCookbookを自分のChefリポジトリにインストールして利用することができます。

今回は試しにGitをインストールしてみます。

Berkshelfファイルの編集

まずはBerkshelfファイルに、インストールしたいパッケージを定義していきます。
今回はGitをインストールしたいので、以下の通り記述します。

  source "https://api.berkshelf.com"
  
  cookbook 'git', '~> 4.5.0'

1行目はパッケージの取得元ベンダーのURLです。
3行目で使用するCookbookを指定しています。記述方法や使い方についてはREADMEを見ればわかるようになっています。

Cookbookを取得する

Berkshelfの記述が終わったので、Berkshelfのコマンドを利用してCookbookを取得してみます。
前回作成したChefリポジトリのtest_chefディレクトリに移動し、以下のコマンドを実行します。

$ berks vendor cookbooks

berks venderコマンドはBerkshelfファイルの内容に従い、オプションで指定したディレクトリにCookbookをインストールします。
site-cookbooksには自分で作成したCookbook(前回、dstatを作成した)が入っていますので、コミュニティから取得するCookbookはcookbooksフォルダにインストールします。

ゲストOSに適用する

前回と同じゲストOSを使いますが、一旦ゲストOSを綺麗にしておきます。

$ vagrant destroy
$ vagrant up

もちろんssh centos6-chefでゲストOSに乗り込んでgitコマンドを叩いてもコマンドは見つかりません。

忘れずにnodes管理ファイルにも追記します。何を追記すれば良いかは、READMEのUsageを見れば書いてあります。

{
     "run_list": [
       "recipe[git::default]",
       "recipe[git::source]"
     ],
     "automatic": {
       "ipaddress": "centos6-chef"
     }
}

では前回実行した以下のコマンドを実行してゲストOSに適用しましょう。

$ knife solo bootstrap centos6-chef

knife solo bootstrapはゲストOSにChefを実行する環境を構築してくれるだけではなく、knife solo cookも実行してくれます。

さて、これでssh centos6-chefでゲストOSに乗り込めばGitのコマンドが使えるようになっているはずです。

f:id:uentseit:20160520004749p:plain:w200