Herokuにberkshelf-apiサーバを立ててみた

前回[2015-01-09-1] はBerksfileにGitリポジトリを直接書きましたが、レ シピの依存関係の解決ができませんでした。 berkshelf-apiサーバを立てるとその問題が解消されるようなので、 Herokuにberkshelf-apiサーバを立てて検証してみました。 適当なOrganizationを作り $ berks cookbook git . などで作ったcookbookを用意します。gitのtagを振る必要がある点は注意です。 https://github.com/doramichan/git/releases https://github.com/doramichan/hub/releases berksコマンドは $ gem install berkshelf などでインストールできます。 hubレシピはgitレシピに依存させた ため、Berksfileに cookbook ‘hub’ と書けばgitレシピもインストールされるはずです。 ※適当なレシピなので動作は保証しません。 次にapiサーバを用意します。Heroku stackがcedar-14だと動かなかった のでcedarに変更しています。LD_LIBRARY_PATHの追加はREADME.md の説明 のとおりです。 $ git clone git@github.com:berkshelf/api.berkshelf.com.git $ cd api.berkshelf.com $ heroku create -s cedar masutaka-api-berkshelf $ heroku config:add LD_LIBRARY_PATH=/app/vendor/libarchive-3.1/lib $ git push heroku master 続けてconfig.jsonを追加し、先ほどのdoramichan Organizationを参照さ せます。 { "endpoints": [ { "type": "github", "options": { "organization": "doramichan", "access_token": "YOUR GITHUB ACCESS TOKEN", "api_endpoint": "https://api....

2015-01-11 (Sun) · masutaka

あるGitリポジトリのサブディレクトリにあるChefレシピを1つだけ取り込む方法

Chef-solo(Knife-solo)とBerkshelfの話。 Berksfileに例えばこうやって書けば使えた。これは有能! relってサブディレクトリのことだったのか。Gemfileで使ったことなかった。 cookbook ’nginx’, git: ‘git@github.com :masutaka/cookbooks.git’, rel: ’nginx’ $ bundle exec berks vendor vendor/cookbooksを実行すると、 vendor/cookbooks/nginxにインストールされる。 .chef/knife.rbを以下のように変更すると、インストールしたnginxレシ ピをnodeやroleから参照できる。ちなみにcookbook_pathは後ろから先に 参照される。$PATHの逆。 cookbook_path [“cookbooks”, “site-cookbooks”] ↓ cookbook_path [“cookbooks”, “site-cookbooks”, “vendor/cookbooks”] ※ .gitignoreに/vendor/cookbooksの追加も忘れずに。 private repositoryの時はこの書式は使えなかった。やり方はあるかもし れない。 cookbook ’nginx’, github: ‘masutaka/cookbooks’, rel: ’nginx’ 今までは https://github.com/masutaka/cookbooks とかをGitのsub moduleとしてガッツリ指定していたため、追随するのが大変だった。 cookbooksを変更する人も気を使ったし。 この辺の話に関連する。 JenkinsでサーバのCIを始めました|feedforce Engineers’ blog Berksfileの書き方は公式ドキュメントに書いてある。 http://berkshelf.com/ 追記: 依存関係(metadata.rbのdepends)は見てくれなかった。そりゃそうか。 継続調査。

2015-01-09 (Fri) · masutaka