概要
npm cookbook の使い方を覚えて npm_package 'pm2'
などと書くことができるようになった。
手順はこんな感じ。
- npm と、依存する cookbooks を取ってくる
- cookbooks を入れてあるディレクトリで
git clone https://github.com/balbeko/chef-npm.git npm
などして取ってくる。 ディレクトリ名は npm で! - あと、chef-npm が依存してる nodejs とか、nodejs が依存してる apt とか yum とか build-essential を取ってくる。
- 面倒臭ければ Berksfile に
cookbook 'npm'
書けば一発なんじゃないかな
- cookbooks を入れてあるディレクトリで
- 自分の cookbook の metadata.rb に
depends 'npm'
を書き足す。
これで、npm_package
リソースを使えるようになって、レシピに npm_package 'pm2'
などと書くことができるようになった。ちなみにいままでは bash リソースにしぶしぶ npm install
とか書いてた。
npm_package の使い方
action の使い方は USAGE に書いてある。providers/package.rb 読むと、action と npm install
との対応がこうなってることが分かる。
action | 対応する npm install |
---|---|
:install | npm install -g |
:install_local | npm install |
:install_from_json | npm install |
:uninstall | npm uninstall -g |
:uninstall_local | npm uninstall |
アプリケーションの開発と違って、今やりたいのはインフラのセットアップだから、デフォルト(:install) が -g になってるのは使いやすいと思った。
私はこのように間違えました
最初、cookbooks に git clone https://github.com/balbeko/chef-npm.git
して、自分の metadata.rb に depends 'chef-npm'
と書いてしまっていた。こうすると、No resource or method named 'npm_package'
というエラーが出て cookbooks のコンパイルに失敗する。
cookbook をどんな名前のディレクトリとして設置すればいいかは、metadata.rb の name に書いてあるので、それを元に決めよう。