Chef の Cookbooks を一発で NIFTYCloud クラウドストレージにアップロードする ncss-cookbooks コマンド
ニフティクラウド上で手軽に Chef を試したいときには、ニフティクラウドストレージへ tgz 形式でアップロードした上で chef-solo コマンドの -r オプションで URL を指定する方法が便利です。
$ chef-solo -j node.json -r https://my-bucket.ncss.nifty.com/v0.0.0/cookbooks.tgz
上記コマンドを打つと、chef-solo は -r に指定された tgz アーカイブファイルをウェブ経由で取得し、ローカルへ展開した上で cookbooks を実行してくれます。
chef-solo -r で取得できるのは便利なのですが、いちいち cookbooks を tgz に書庫化してニフティクラウドストレージへアップロードする部分が面倒なので、これを自動化するコマンドを作りました。
インストール
$ gem install ncss-cookbooks
使い方
管理している cookbooks レポジトリの直下に VERSION というファイルを作成してバージョンを書き込みます。
$ echo "0.0.0" > VERSION
環境変数でニフティクラウドストレージの API キーを設定します。
$ export ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX $ export SECRET_ACCESS_KEY=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
あとはバケットを作成するコマンドと、作成したバケットに cookbooks.tgz をアップロードするコマンドを叩くだけです。
$ ncss-cookbooks create my-bucket $ ncss-cookbooks upload my-bucket Version is v0.0.0 Creating directory /tmp/ncss-cookbooks-20130519-30448-2im9m1/cookbooks/ Copying files from /home/tily/dev/ncss-cookbooks to /tmp/ncss-cookbooks-20130519-30448-2im9m1/cookbooks/ Excluded /home/tily/dev/ncss-cookbooks/.git Archiving /tmp/ncss-cookbooks-20130519-30448-2im9m1/cookbooks/ to /tmp/ncss-cookbooks-20130519-30448-2im9m1/cookbooks.tgz Uploading /tmp/ncss-cookbooks-20130519-30448-2im9m1/cookbooks.tgz to bucket:my-bucket, object:v0.0.0/cookbooks.tgz Temporary directory /tmp/ncss-cookbooks-20130519-30448-2im9m1 will be deleted automatically Uploaded to https://my-bucket.ncss.nifty.com/v0.0.0/cookbooks.tgz
発行された URL は chef-solo -r から利用できます。
$ chef-solo -j node.json -r https://my-bucket.ncss.nifty.com/v0.0.0/cookbooks.tgz
あとがき
- 特に大したことはやっていないのですが、バージョン管理の運用と組み合わせて使えるので結構便利なのではないかと思います
- 最初 knife コマンドに組み込もうと思ったのですが、knife は色々なファイルをロードして結構重いので単体のコマンドにしてみました
- 個人的には前に作ったニフティクラウドを vagrant のように使える some コマンドと組み合わせて使おうと思っています
- そもそも chef-solo -r が BASIC 認証等に対応していないので cookbooks.tgz を認証なしの URL に置かなければならないのが少し厳しい感じがします、やはり本格的に運用するなら Chef サーバーでしょうか