AWS OpwsworksのnodeLayerでDeployする度にnpmのversionが初期状態に戻ってしまう

Opsworksの標準で選べるnpmのversionが古いので Configure 時に以下のRecipeを実行するようにしてた。

execute "upgrade npm" do
  command "npm install -g npm"
  action :run
end
execute "upgrade node" do
  command "sudo npm install -g n;sudo n stable"
  action :run
end

ただ、Opsworksの仕様なのかDeployする度にVersionが初期状態に戻ってしまう現象が発生して、2回目行こうのDeploy時にnpm install で問題が起こる現象に悩まされていた。

いまのところ、対処療法的に ↑のrecipeを Deploy, UnDeploy時に実行したところnpm install がコケル問題は解決

もっと良い解決方法がないかAWSのサポートに聞いてみよう...

追記

サポートに問い合わせたところ、yumに入ってるopsworks-nodejsの問題のようで近日中には修正されるそうです。

それまではデプロイ後にnpmを更新するスクリプトを入れる対応をして欲しいとのこと。

まぁ、修正されるようでよかった

追記2

デプロイ前後に上記のスクリプトを入れたところ他の問題が発生した。 Opsworksがnpm install する段階ではnodeのバージョンが下がっていて古いバージョンで npm install したあとで新しいNodeに更新されて、node server.js ような実行手順になる。

そうなるとinstallした段階とstartするときでNodeのバージョンが異なりC実装のネイティブを叩いているものなど一部のモジュールが正常に動かなくなる。

今回は諦めて古いバージョンのNodeでも動くようにソースを全部書き換えた

追記3

このバグは治ったそうです