ぴよログ

↓に移転したのでこっちは更新されません、多分。

knifeでOPSCODEのCookbookを使う

移転しました →

OPSCODEのCookbookはknifeで自動取得して使うことができます。自分でダウンロードしてChefリポジトリに配置してもいいみたいですが、せっかくなので自動でやってみます。

private_keyを取得

Opscode Community

このリンクからOPSCODEに飛んで、右上のSing Upから登録できます。有料版の案内が出てビビリますがちょっとだけ下にFree Trialがあるのでそちらを。

f:id:xoyip:20131010110700p:plain

アカウントが完了したら自身のユーザーページからプライベートキーをダウンロードできます。username.pemというような名前のファイルです。

f:id:xoyip:20131010110706p:plain f:id:xoyip:20131010110711p:plain

knife.rbの設定

さきほどダウンロードしたファイルを任意の場所に置きます。わかりやすさのために ~/.chef/に置くのがよさそうです。

パーミッションも変更します。

$ chmod 600 ~/.chef/username.pem

続いて~/.chef/knife.rbを編集します。このファイルはknife configureしたときにできるもので、各種設定が書かれています。

このファイルを編集してこんなふうにします。

client_key '/Users/username/.chef/username.pem'
cookbook_path ['./cookbooks']

knifeによる自動取得はChefリポジトリのルートディレクトリで行います。2行目のcookbook_pathはそのときに取ってきたCookbookをどこに配置するかを指示していて、./cookbooksとしておくことでいい感じの場所に配置されるようにしてあげています。

自動取得のやりかた

Chefリポジトリでコマンドを実行します。

が、knifeによる自動取得ではgitにコミットするところまでを自動で行うらしいので、そもそもChefリポジトリがgitで管理されていないといけないみたいです。またワーキングツリーに変更がある状態だと何もしてくれないらしい。

まだgit管理していなければ、git init → add → commitします。

あとはこんな風に実行すればいいです。

$ knife cookbook site vendor apache2

git log してみると勝手にコミットまで済んでいるのがわかります。あとは必要に応じて設定すればおーけー。でも設定がブラックボックスすぎてよくわからない。