2014年5月13日火曜日

[Ruby] Chefで”application_java”クックブックを使ってTomcatにwarファイルをデプロイする際にはまったこと

2013-10-21 20.28.59

猫と一緒にガジェットライフ♪ムチャ(@mutoj_rdm821)です。

前回に続き、ChefでJavaアプリケーションのデプロイを行うクックブック”application_java”を使っていたときに遭遇した問題とその解決方法です。

前回記事はこちら↓

[Ruby] Chefで”database”クックブックを使ってCentOSにPostgreSQLを構成する際にはまったこと | 羽根帽子の太公望



クックブック”application_java”とは

Tomcatへのwarファイルのデプロイを自動化するものです。

どうも一般的にはChefのお仕事はミドルウェアの構成までで、その上で動くアプリケーションの構成については別のツール(Capistrano:カピストラーノなど)を使うようですが、今回は事情あってChefで全て行うというお達しでした。

クックブックは公式のコミュニティで配布されています。

そこからリンクされているgithubの方へ行くと、サンプルレシピが書いてあります。

application 'my-app' do
  path         '/usr/local/my-app'
  repository   '/nas/distro/my-app.war'
  revision     '...'
  scm_provider Chef::Provider::File::Deploy
  java_webapp do
    database_master_role 'database_master'
    database do
      driver     'org.gjt.mm.mysql.Driver'
      database   'name'
      port       5678
      username   'user'
      password   'password'
      max_active 1
      max_idle   2
      max_wait   3
    end
  end
  tomcat
end

別途”java”、”tomcat”、”application”クックブックも必要になります。これらもコミュニティで配布されています。



謎のエラーが発生

サンプル通りにchef-soloを実行すると、こんなエラーが出ました。

Error executing action `deploy` on resource 'deploy_revision[solr]'

コードを探ってもよくわからず・・・。



解決方法

色々探し回った結果、解決方法を見つけました。

配布元のリポジトリから別の人がforkしたリポジトリの、さらにtestというブランチに対応済みのコードがアップされていました。

こちらのクックブック一式を使うと正常にデプロイができました。

クックブックによっては、公式のコミュニティで配布されているものでも長いこと放置されていたりするので注意が必要です。かといって、bashリソースとかでシェルスクリプトをゴリゴリ書いてしまうと汎用性が失われるので、難しい所です。


今度技術評論社からChefの本が出るようなので、利用している人はチェックしてみてはいかがでしょうか。

それではみなさま良きガジェットライフを(´∀`)ノ



0 件のコメント :
コメントを投稿

▼こちらの記事もどうぞ

▼ブログを気に入っていただけたらRSS登録をお願いします!
▼ブログランキング参加中!応援よろしくお願いします。

スポンサーリンク