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のコマンドが使えるようになっているはずです。