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