関連記事
- Chefを使ってより効率的にサーバを管理しよう。まずは用語から
- Berkshelfを使って外部クックブックをノードに適用する。
- クックブックを作成してノードに適用する。- その1
- クックブックを作成してノードに適用する。- その2
- ChefでCentOS 6.7 + rbenv + ruby 2.3.0の環境を構築する。
- ChefでCentOS 6.7 + Vim 7.4 + luaを設置する。
- ChefでVimプラグインマネージャーNeoBundleを設置する。
- Chefのレシピをデバッグしてみよう。
- ChefでCentOS 6.7 + nginxを設置する。- 外部クックブック
- ChefでCentOS 6.7 + nginxを設置する。- カスタムクックブック
- ChefでCentOS 6.7 + nodejs + npmを設置する。
- ChefでVimプラグインマネージャーvim-plugを設置する。
- ohaiのカスタムプラグインを作ってみよう。
- Chef SoloからChef Zeroへ
- Chefでnginx + php(php-fpm) + mariadb + wordpressを設置する。
rubyからjavascriptコードを実行
- railsではassets precompileなどのjavascriptの実行のためにtherubyracerというgemを提供している。
- しかし、therubyracerはメモリ使用量が大きくてHerokuでは非推奨となっている。
- therubyracerの代わりにnodejsを設置することを推奨する。
- どうせphantomjsを設置するためにはnodejsは必要だ。
クックブックの作成
- Chef社のSupermarketであるnodejsをみたが、簡単に設置することだけなのに余計に複雑だったので自作する。
% bin/knife cookbook create nodejs -o site-cookbooks
レシピの作成
- nodeはyumで設置しても構わないが、npmはsourceで設置することを推奨する。
- yumで提供するnpmは余計なpackageがたくさん設置されるし古い。
- site-cookbooks/nodejs/recipes/default.rb
package "nodejs" do
action :install
end
execute "install npm" do
command "curl -L https://www.npmjs.com/install.sh | sh"
not_if "which npm"
end
%w(phantomjs).each do |pkg|
execute "npm install #{pkg}" do
command "npm -g install #{pkg}"
not_if "npm -g ls --depth=0 | grep #{pkg}"
end
end
実行結果
% bin/knife node run_list add dev 'recipe[nodejs]' -z
% bin/knife solo cook dev -E development
... snip ...
Recipe: nodejs::default
* yum_package[nodejs] action install
- install version 0.10.42-4.el6 of package nodejs
* execute[install npm] action run
- execute curl -L https://www.npmjs.com/install.sh | sh
* execute[npm install phantomjs] action run
- execute npm -g install phantomjs
ノード上で確認
% ssh dev
$ node -v
v0.10.42
$ npm -v
3.7.5
$ npm -g ls --depth=0
/usr/lib
├── npm@3.7.5
└── phantomjs@2.1.3
$ which node
/usr/bin/node
$ which npm
/usr/bin/npm
参考
- Chef活用ガイド
- Chef実践入門